Javascript hasClass(';已禁用';)在.addClass(';已禁用';)之后不工作
选择此选项后,hasClass验证将正常工作Javascript hasClass(';已禁用';)在.addClass(';已禁用';)之后不工作,javascript,jquery,Javascript,Jquery,选择此选项后,hasClass验证将正常工作 <div class="row dis"> <input class="contact button selected" value="Contact Us"> </div> hasClass在$('.contact').addClass('disabled')之后仍然找不到禁用的类 所以,我只想要第一个警报 演示: 在JS运行时没有。禁用了元素,因此,没有。contact与click()绑定。您可以这样
<div class="row dis">
<input class="contact button selected" value="Contact Us">
</div>
hasClass在$('.contact').addClass('disabled')之后仍然找不到禁用的类代码>
所以,我只想要第一个警报
演示:
在JS运行时没有。禁用了元素,因此,没有。contact
与click()绑定。
您可以这样做
$('input.contact').on('click',function(){
if( !$(this).hasClass('disabled') )
{
alert('---');
$(this).addClass('disabled');
}
});
基本上,当点击input.contact
时,检查它是否有类.disabled
——如果没有,则触发警报
,并添加类.disabled
——这反过来防止它在第二次点击时触发
或者你可以有一种稍微优雅一点的方式:
$('.dis').on('click','input.contact:not(.disabled)',function(){
alert('---');
$('.contact').addClass('disabled');
});
相同的概念。$('.dis>.contact').hasClass('disabled')
立即返回匹配的元素。它不会自动绑定到添加了类的新元素。您可以绑定到“all”.dis>。联系
(并检查处理程序中的类)和/或更好地使用。如果您要绑定到可以动态更改的类,则需要将事件委派与.on()
一起使用。@Barmar-不太可能,只要将条件移动到事件处理程序内部就足够了。@adeneo这基本上就是.on()
自动执行的操作。@Barmar-基本上是的!从技术上讲,它将事件处理程序移动到父元素,这在这里似乎是不必要的?
$('input.contact').on('click',function(){
if( !$(this).hasClass('disabled') )
{
alert('---');
$(this).addClass('disabled');
}
});
$('.dis').on('click','input.contact:not(.disabled)',function(){
alert('---');
$('.contact').addClass('disabled');
});