我正在关注此线程以禁用/启用单击按钮, 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()不是我应该工作的那个?
感谢。
答案 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/