2012-03-12 136 views
9

後不工作我有一個與class="tags"的div與一個預定義的超鏈接。

<div class="tags"> 
    <a href="#">myLink</a> 
</div> 

而我有功能刪除該超鏈接,如果用戶點擊它。

$('.tags a').click(function() { 
    $(this).remove(); 
    return false; 
}); 

這可以使用預定義的超鏈接。 如果我添加使用jQuery的幫助(在頁面加載後)

$('.tags').append('<a href="#">newLink</a>'); 

功能的另一個鏈接刪除超鏈接(點擊上)將不會被這些所謂的,添加鏈接。如何解決這個問題?

回答

4

你必須使用實時功能:

$(".tags a").live("click", function() { 
    // ... 
}); 

因爲您要添加的初始加載後的鏈接,該標準的click事件將不會被綁定到動態添加的鏈接。

+19

**注意** ['live()'](http://api.jquery.com/live)從1.7開始折舊。從現在起使用['on()'](http://api.jquery.com/on)是明智的。翻譯的調用將是'$(document).on('click','.tags a',function(){/ * foo * /});' – Matt 2012-03-12 10:51:02

+0

謝謝。我是否應該在所有點擊/類似操作中使用它,或者只在真正需要時才使用它? – svenkapudija 2012-03-12 10:51:07

+1

對於性能,看看這個答案: http://stackoverflow.com/questions/6047193/liveclick-and-performance 我個人更喜歡使用點擊事件,只使用現場活動,如果我真的需要它,因爲很明顯會有動態添加元素。 – kufi 2012-03-12 10:54:28

0

您的點擊事件只附加到當前dom元素而不是將來的元素。如果您想將此事件添加到所有元素包含未來,那麼您必須在jquery中使用實時事件。 http://jsfiddle.net/6cGvt/

+5

**請注意** [live()'](http://api.jquery.com/live)自1.7開始折舊。從現在起使用['on()'](http://api.jquery.com/on)是明智的。翻譯的調用將是'$(document).on('click','.tags a',function(){/ * foo * /});' – Matt 2012-03-12 10:53:59

+0

是的,...對於jQuery中的最新版本。使用ON方法 – sandeep 2012-03-12 10:55:01