我有这段代码:
http://codepen.io/anon/pen/dPgMWm
HTML:
<a href=# class=test1>test1</a>
<a href=# class=test2>test2</a>
和脚本:
$('.test1, .test2').live('click', dosth);
function dosth(e) {
e.preventDefault();
alert('test');
}
//my script
$('.test1').die('click');
$('.test1').unbind('click');
如你所见,我在多个选择器上有.live()(遗留代码:(),我必须从一个选择器中解除绑定...我该怎么做?
使用新的jquery和.on()/。off()它就像一个魅力,但如果我不能切换到新版本怎么办?我不能用绑定修改脚本......
编辑:
我有1.4.4版本。我无法修改处理程序。只有“我的剧本”部分。
答案 0 :(得分:0)
我不相信你可以。你必须完全解开旧的,然后重新绑定你想保留的那些。
$('.test1, .test2').live('click', dosth);
function dosth(e) {
e.preventDefault();
alert('test');
}
$('.test1, .test2').die('click');
$('.test1').live('click', dosth);
<script src="http://code.jquery.com/jquery-1.7.min.js"></script>
<div class="test1">test1</div>
<div class="test2">test2</div>
(不用说,尽快更新到最新版本。)
答案 1 :(得分:0)
也许使用数据属性
function dosth(e) {
if ($(this).data("clickme") == true) {
e.preventDefault();
alert('test');
}
}
$(function() {
$('.test1, .test2').live('click', dosth);
$('.test1').data('clickme',true);
$('.test2').data('clickme',false);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<a href="#" class="test1">Click me</a><br/>
<a href="#" class="test2">Don't click me</a>
&#13;
更新 - 如果您需要修改dosth,可以替换它:
var mydosth=dosth;
dosth=function(e) { if (....) mydosth(e); }