2011-11-09 178 views
3

即時通訊選擇帶有類的元素有一些奇怪的問題。
在我的情況下,我有這個AJAX查詢,返回一些具有相同類的鏈接。 當我點擊一個事件應該發生的鏈接,但它沒有。

然後我嘗試使它警告時,類的元素已被點擊,什麼都沒有發生,然後我嘗試使頁面上的直接鏈接與同一類,現在它給了我警報..

發生什麼事 ?阿賈克斯查詢檢查用戶是否在線,並做到這一點每1分鐘,該元素具有類「朋友」,我試圖通過這個代碼來調用它:jQuery選擇器不能正常工作

$('.friend').click(function(){ 
    alert('clicked'); 
}); 

沒有與顯示的那些happends ajax請求。但它會響應直接放到網站上的鏈接。

+1

這是每天都問了幾次。讓我去找一個傻瓜。 – zzzzBov

+0

你可以發佈你的HTML元素與朋友類嗎? – ThinkingStiff

+0

那個帖子怎麼樣? – Flaashing

回答

1

嘗試使用live

$('.friend').live('live',function(){ 
    alert('clicked'); 
}); 

這將是處理程序追加到該存在將該選擇存在項目和項目。

+0

以及它仍然無法正常工作:/ Flaashing

+0

@Flaashing它工作正常(你可以看到你選擇的答案[這與我的相同],但後來回答:-P) – Neal

+0

補給它..我吸在這個時候,你是正確的答案:) 現在它的工作,我只是不得不改變索姆代碼的東西;)感謝很多順便說一句,你進入PHP? – Flaashing

1

使用實時功能。它更「可靠」。

$('.friend').live('click', function(){ 
    alert('clicked'); 
}); 
+0

我喜歡這個想法,但不太喜歡「可靠」。這只是一個不同的,面向AJAX的事件處理程序。 – Alex

0

問題是jQuery的click功能僅結合到這些都是在DOM被click運行時刻的元件。因此您的ajax呼叫所添加的鏈接稍後會發生,因此會錯過。 jQuery的< 1.7使用live這種類型的場景

$('.friend').live('click', function(){ 
    alert('clicked'); 
}); 

的jQuery的1.7及以上版本使用新的統一on語法

$(document).on('click', '.friend', function(){ 
    alert('clicked'); 
}); 
+0

'on'不會執行事件委託,除非提供了selector參數。如果必須的話,嘗試使用'$(document.body).on('click','.friend'...)',但在這一點上它與'live'基本相同,所以你可以使用'live '。 – zzzzBov

+0

@zzzzBov是的,你是對的。仍然適應新的語法 – JaredPar

+0

我也是。我已經閱讀了[on on on](http://api.jquery.com/on/)上的文檔約10次,每次提及時我都需要引用它們。 – zzzzBov