jQuery的.not()与live()配合使用无效

3
我正在一个页面中使用ajax添加一些dom,在这个页面中,我试图通过.not()来排除选定的结果,但是它对我没有起作用。
这里是一个简单的例子:
HTML:
<div class="list-item">
        <span class="item-title">Some title</span>
        <span class="edit fr"><a href="Edit link">Edit</a></span>
        <span class="trash fr"><a href="#trashit" rel="trash">Trash</a></span>
        <span class="live fr active"><a href="#liveit" rel="publish">Live</a></span>
        <span class="draft fr"><a href="#draftit" rel="draft">Draft</a></span>

 </div>

jQuery:
jQuery('.list-item span a').not('.list-item span.edit a').live('click', function(){

       //do stuff
});

观察:
  1. 如果我删除代码中的 .not() 部分,则选择器与 live() 一起使用时可以正常工作。
  2. 如果我使用 .not(),但将 live() 替换为 click(),则代码可以正常工作。
但是我需要在使用 live();(包括使用ajax操作dom)时运行 .not()(排除 .edit 类)。
提前感谢!
3个回答

8
根据 .live() 文档所述:

不支持使用DOM遍历方法来查找要发送到.live()的元素。相反,应该像上面的示例一样直接在选择器后调用.live()方法。


因此,请将类排除选择器中:
jQuery('.list-item span:not(.edit) a').live('click', function(){
    //do stuff
});

3

尝试

$('.list-item span:not(.edit) a').live(...);

正如其他人所指出的,DOM遍历不支持live。live还有其他限制,请查看文档。


0
jQuery('.list-item').filter(function(){

return $(this).not("span.edit a")
})
.live('click', function(){

       //do stuff
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接