2011-08-19 243 views
3

我在頁面中添加了一些dom與ajax,我試圖通過.not()排除選擇的結果,但它不適用於我。jquery .not()與live不兼容()

下面是一個簡單的例子:

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();(阿賈克斯包括DOM)

提前感謝運行.not()(排除.edit類)!

回答

8

the .live() docs

DOM遍歷方法不支持尋找元素,以發送到.live()。相反,應該總是在選擇器之後直接調用.live()方法,如上例所示。


所以,該類排除加入選擇:

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

感謝您指出這一點。像魅力一樣工作! – Sisir

3

嘗試

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

正如別人指出的,DOM遍歷不支持直播。 live也有其他一些限制,請檢查文檔。

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

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

     //do stuff 
});