Jquery禁用div并禁用单击它

时间:2014-01-31 06:40:27

标签: jquery click

我尝试禁用点击事件,并在点击该项目后禁用div。我无法实现此功能。有帮助吗? What I have tried

<div class="ordrClone">
                       Image 1
                    </div>
<div class="ordrClone">
                       Image 2
                    </div>
<div class="ordrClone">
                       Image 3
                    </div>

<div>
   <input type="button" id= "btnCancel" value="Enable"> 
</div>

 $('.ordrClone').click(function () {
        $('.ordrClone').not(this).each(function() {
            $(this).off('click');
        });
    });

$('#btnCancel').click(function () {
     $('.ordrClone').each(function() {
            $(this).on('click');
        });
});

5 个答案:

答案 0 :(得分:2)

使用$(this)代替:

$('.ordrClone').not($(this)).each(function() {

还创建一个回调函数并在on方法上使用该回调:

$(this).on(&#39;点击&#39;); //这是错误的做法。

$(this).on('click',callback);

请参阅on method了解更多详情

但如果您只想使用该功能一次,则可以使用one method代替方法。

答案 1 :(得分:1)

一个简单的解决方案是

$(document).on('click', '.ordrClone:not(.disabled)', function () {
    console.log('clicked')
    $('.ordrClone').not(this).addClass('disabled');
});

$('#btnCancel').click(function () {
    $('.ordrClone').removeClass('disabled');
});

演示:Fiddle

答案 2 :(得分:1)

使用one()代替on()

$('.ordrClone').one('click',function () {
      // your code worked once
});

Live Demo

答案 3 :(得分:1)

如果您只想点击一次

,则可以使用One
$(document).one('.ordrClone','click',function () {
        $('.ordrClone').not(this).each(function() {
            $(this).off('click');
        });
    });

答案 4 :(得分:1)

$(“#btnCancel”)。点击(function(){$(this).unbind('click');}

这应取消绑定您刚刚点击的项目的“点击”功能。您可以通过许多不同的方式禁用元素。一个非常流行的方法是.hide()编写代码并在需要时使用它,但上面的代码可以正常工作以禁用表单元素中的特定事件。