jquery:live() - 只活一次?

时间:2010-11-04 02:16:42

标签: click jquery disabled-control

我正在关注此线程以禁用/启用单击按钮, Best way to remove an event handler in jQuery?

它的想法是你也可以使用live()方法来启用/禁用事件。这段代码会发生什么,当你点击一个标签元素,例如.load-item时,它会将禁用的类添加到这个元素。这将使选择器不再与元素匹配,并且在删除'disabled'类之前不会触发事件,使.live()选择器再次有效。

以下是我发布的内容,它确实禁用了第一个按钮上的点击,

$('.load-item:not(.disabled)').live('click',function(){


/* add a .current class to the target item */
$(this).parentsUntil('.column-global').addClass('current');

/* add .disabled class to each a tag in the .current element-div */
$('.current a').each(function(index) {
    $(this).addClass('disabled');
});

....

});

我还有另一个功能,当你点击另一个按钮

时删除了被禁用的类
$('.button-return').click(function(){

    ...

    /* remove all the .disabled class if any exists */
    $('.current a').each(function(index) {
        $(this).removeClass('disabled');
    });

    ...

    /* remove all the .current class if any exists */
    $('.item-global').removeClass('current');



    return false;

});

我已经检查过它确实删除了被禁用的类,但是第一个按钮仍然没有恢复到原来的可点击状态。

我错过了什么 - 或者直播()实际上只生活过一次吗?任何更好的解决方案如果live()不是我应该工作的那个?

感谢。

2 个答案:

答案 0 :(得分:1)

您的返回按钮也需要是直播活动

$('.button-return:not(disabled)').live("click",function(){...});

当使用addClass()和removeClass()时,您不需要在选择器上使用每个。只需打电话。

$('.current a').each(function(index) {
    $(this).removeClass('disabled');
});

与此相同

$('.current a').removeClass('disabled');

<强>被修改

注意当您将实时事件添加到返回按钮时,您需要验证它是否未被禁用。

这里完美无缺的是一个简单的demo. http://www.jsfiddle.net/Qax3n/

答案 1 :(得分:0)

它必须与您的HTML布局或其他Javascript有关。以下作品: http://jsfiddle.net/EEJEh/