我对.live()和.die()方法存在“问题”。 我正在使用jQuery 1.5.1。 这是我的方案
<div id='div1' class='MyClass'>Link 1</div>
<div id='div2' class='MyClass'>Link 2</div>
<div id='div3' class='MyClass'>Link 3</div>
和我的jQuery脚本
$('.MyClass').live('click', function(evt) {
local.href = 'home.aspx'
});
由于某种原因我想禁用链接2所以我试图这样做
$('#div2').die('click');
但似乎没有问题。 我认为,如果我使用类选择器添加事件,我无法使用id选择器删除相同的事件。 我必须使用.live()方法,因为我不知道我的页面中有多少div。
有人有任何“修复”这个问题的建议吗?
答案 0 :(得分:3)
您需要做的就是从div2中删除“MyClass”类。然后它将与实时绑定的选择器不匹配。
答案 1 :(得分:0)
要尝试的其他内容:
$('.mySelector').unbind('click');
答案 2 :(得分:0)
一个“修补程序”解决方案就是:
$('.MyClass').live('click', function(evt) {
if ( $(this).data('disabled') ) { return false; } // return if disabled
// do your stuff
});
然后,当你想要禁用DIV时,请执行以下操作:
$('#div2').data('disabled', true);
现在,live-handler仍将执行,但会立即返回。
您甚至可以稍后通过将上述数据属性设置为true
来重新启用它。