我在页面中添加了一些带有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
});
观察:
.not()
部分,则选择适用于live()
。.not()
,但将live()
替换为click()
则代码可以正常运行。但我需要使用.not()
(包括带有ajax的dom)运行.edit
(排除live();
类)
提前致谢!
答案 0 :(得分:8)
查找要发送到
.live()
的元素不支持DOM遍历方法。相反,应始终在选择器之后直接调用.live()
方法,如上例所示。
因此,将类排除添加到选择器:
jQuery('.list-item span:not(.edit) a').live('click', function(){
//do stuff
});
答案 1 :(得分:3)
尝试
$('.list-item span:not(.edit) a').live(...);
正如其他人指出的那样,实时不支持DOM遍历。 live也有其他一些限制,请查看文档。
答案 2 :(得分:0)
jQuery('.list-item').filter(function(){
return $(this).not("span.edit a")
})
.live('click', function(){
//do stuff
});