繁体   English   中英

jquery .not()不能使用live()

[英]jquery .not() is not working with live()

我在一个页面中添加了一些带有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()但用click()替换live()代码可以工作。

但我需要使用live();运行.edit .not() (不包括.editlive(); (包括带有ajax的dom)

提前致谢!

根据.live()文档

查找要发送到.live()元素不支持DOM遍历方法。 相反,应始终在选择器之后直接调用.live()方法,如上例所示。


因此,将类排除添加到选择器:

jQuery('.list-item span:not(.edit) a').live('click', function(){
    //do stuff
});

尝试

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

正如其他人所指出的那样,实时不支持DOM遍历。 live也有其他一些限制,请查看doc。

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

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

       //do stuff
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM