hasClass('disabled')在.addClass('disabled')之后无法正常工作

时间:2013-10-03 23:43:30

标签: javascript jquery

选中后,hasClass验证可以正常工作。

<div class="row dis">
    <input class="contact button selected" value="Contact Us">
</div>

但是如果我通过jquery删除选中的内容:

<div class="row dis">
    <input class="contact button" value="Contact Us">
</div>

if (!$('.dis > .contact').hasClass('disabled')) {
    $("input.contact").click(function() {

        alert('---');
        $('.contact').addClass('disabled');

    });
}

$('.contact').addClass('disabled');之后,hasClass仍未找到已禁用的课程。

所以,我只想要第一个警报。

演示:

http://jsfiddle.net/dWGNJ/2/

2 个答案:

答案 0 :(得分:0)

JS运行时没有.disabled元素,因此,.contactclick()没有关联。

答案 1 :(得分:0)

你可以这样做..

$('input.contact').on('click',function(){

    if( !$(this).hasClass('disabled') )
    {
        alert('---');
        $(this).addClass('disabled');
    }
});

基本上,点击input.contact后,检查是否有.disabled课程 - 如果没有,则会触发alert并添加课程.disabled - 其中反过来阻止它第二次点击时触发

或者你可以采用更优雅的方式:

$('.dis').on('click','input.contact:not(.disabled)',function(){
    alert('---');
    $('.contact').addClass('disabled');
});

相同的概念。