事件绑定时,“not :()”选择器不能与“.live()”一起使用

时间:2012-06-30 01:46:52

标签: javascript jquery

当我向某些mousedowns添加live()时,我的not:条件已停止工作。

 $("body :not(" + _self.somevar + ")").live('mousedown',
     function(event){
     event.stopPropagation();
     // some more code
 }

当它live()不起作用时。现在我使用了live(),当我对这个项目进行了嘲讽时,它会在不应该发生时触发。

任何人都知道为什么不再遵守not:

2 个答案:

答案 0 :(得分:0)

您可以将.live()方法更新为.on()(以使用新版本的jQuery)。因此,您需要在document mousedown选择body :not(#notAcceptedElement)的事件中进行申请。例如:

<强> HTML

<div id="notAccept">Not Accept Mousedown</div>
<div id="accept">Accept Mousedown</div>

JS (jQuery 1.6):

$('body :not(#notAccept)').live('mousedown', function(ev) {
    console.log(ev.target);
    $('#accept').clone().appendTo(document.body);
});

JS (jQuery edge / 1.8):

$(document).on('mousedown', 'body :not(#notAccept)', function(ev) {
    console.log(ev.target);
    $('#accept').clone().appendTo(document.body);
});
​

实例:jsFiddle jQuery-1.6jsFiddle jQuery-edge

答案 1 :(得分:0)

我希望您只知道可以在HTML页面中使用的一个正文标记。在你的情况下,如果你尝试为id / class附加事件,它会更好。和语法将是这样的,

对于元素的id

$("#not:'+ _self.somevar'+").live('mousedown',
 function(event){
 event.stopPropagation();
 // some more code
}

对于元素类

$(".not:'+ _self.somevar'+").live('mousedown',
 function(event){
 event.stopPropagation();
 // some more code
}