jQuery .live() 用于多个选择器 - 如何从其中一个选择器中解绑事件



我有这段代码:

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 版本。而且我无法修改处理程序。只有"我的剧本"部分。

我不相信你能做到。您必须完全取消绑定旧的,然后重新绑定要保留的那些。

$('.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>

(不用说,尽快更新到最新版本。

也许使用 data 属性

    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); 
});
<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>

更新 - 如果您需要修改 dosth,您可以替换它:

var mydosth=dosth; 
dosth=function(e) { if (....) mydosth(e); }

相关内容

  • 没有找到相关文章

最新更新