Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript hasClass(';已禁用';)在.addClass(';已禁用';)之后不工作_Javascript_Jquery - Fatal编程技术网

Javascript hasClass(';已禁用';)在.addClass(';已禁用';)之后不工作

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()绑定。您可以这样

选择此选项后,hasClass验证将正常工作

<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');
});