Javascript jquery.not()无法与live()一起使用

Javascript jquery.not()无法与live()一起使用,javascript,jquery,Javascript,Jquery,我在一个页面中添加了一些带有ajax的dom,我试图通过.not()排除所选结果,但这对我不起作用 这里有一个简单的例子: <div class="list-item"> <span class="item-title">Some title</span> <span class="edit fr"><a href="Edit link">Edit</a></span>

我在一个页面中添加了一些带有ajax的dom,我试图通过
.not()
排除所选结果,但这对我不起作用

这里有一个简单的例子:

<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('.list-item span a').not('.list-item span.edit a').live('click', function(){

       //do stuff
});
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('.list-item span a').not('.list-item span.edit a').live('click', function(){

       //do stuff
});
观察:

<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('.list-item span a').not('.list-item span.edit a').live('click', function(){

       //do stuff
});
  • 如果我删除了代码的
    .not()
    部分,则选择可以与
    live()
    配合使用
  • 如果我使用
    .not()
    而是将
    live()
    替换为
    click()
    ,则代码可以工作
  • 但是我需要用
    live()运行
    .not()
    (排除
    .edit
    类)(包括使用ajax的dom)

    提前谢谢

    试试看

    $('.list-item span:not(.edit) a').live(...);
    
    正如其他人指出的,DOM遍历不支持live。live还有一些其他限制,请查看文档。

    请按照:

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


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

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