2013-02-06 53 views
0

這是我的jQuery代碼:爲什麼我從這個jquery獲得javascript:無法識別的表達式?

$('.ajax_modal a').not('.popup').live('click', function(e){ 

//do something 

}); 

當我點擊錨a.popup,我希望什麼發生:

<div class="ajax_modal"> 
<a class="popup">Should do nothing</div> 
<a class="something">Should do something<a> 
</div> 

相反,我得到它打破了下面的錯誤我的網頁:

錯誤:語法錯誤,不能識別的表達式:.ajax_modal a.not(.popup)

+1

僅供參考Live:已棄用1.7+ – epascarello

回答

2

.live()不適用於鏈式遍歷方法。

改變,要

$('.ajax_modal a:.not(.popup)') 
+0

brill感謝v多! – Ash

1

1:標籤沒有被正確關閉。

<div class="ajax_modal"> 
    <a class="popup">Should do nothing</div> 
    <a class="something">Should do something<a> 
</div> 

應該是:

<div class="ajax_modal"> 
    <a class="popup">Should do nothing</a> <!-- changed from </div> --> 
    <a class="something">Should do something</a> <!-- changed from <a> --> 
</div> 

2:你最好使用:not()代替.not(),如下面所示:

$('.ajax_modal a:not(".popup")').on('click', function(e){ 
    console.log(this); 
}); 

3:最後,live已被棄用。所以使用on綁定事件

EXAMPLE

+0

雖然not()不接受jquery對象,但它也接受任何jquery選擇器。過濾器將會有很長的一段感覺。使用:不是僞選擇器就是要走的路...... – Ash

0

可能是因爲您的「彈出式」超級鏈接關閉了標籤,而不是一個標籤。同樣,「東西」超鏈接沒有正確關閉。另外值得注意的是:一些瀏覽器抱怨在超鏈接標籤中沒有包含「href」屬性,所以至少在其中添加href="#"

相關問題