2013-05-18 60 views
2

我正在使用event.stopPropagation(),但我在使用.live()父級處理程序時遇到問題。實時處理不適用於event.stopPropagation();

//does not work 
$("#testlink").live({ 
    click: function(event) 
    { 
     alert('testlink'); 
    } 
}); 

//works great! 
$("#testlink").click(function() { 
    alert('testlink'); 
}); 

我必須使用.live(),因爲內容是用AJAX加載的。

有人可以幫我解決這個問題嗎?


如何使用多個類或IDS這樣嗎?

$('#div1', '#div2', '#div3').on('click', 'a.testlink', function(){ 
    alert('testlink'); 
}); 

這怎麼可能?

+2

'live()'已棄用。改用'.on()'。 http://api.jquery.com/on/ – techfoobar

回答

2

on()使用(如@techfoobar提到的,live()已被棄用在1.7版本,並根據的1.9版本中刪除)和事件代理如果是動態生成的內容:

$('#container').on('click', '#testlink', function(){ 
    alert('testlink'); 
}); 

哪裏#container是包含動態的元素加載#testLink元素(您可以使用document,但在此處使用容器元素會減少搜索範圍並提高效率)。

+0

最好的解決方案是在這裏使用'#容器'元素。這會將事件附加到'#container'元素中的任何鏈接,從而減少了檢查整個'document'元素樹並提高效率的範圍。 –

+0

@PalashMondal當然,但我不知道'#容器'元素是什麼,因爲OP沒有提供足夠的細節(或任何類型的標記):) – lifetimes

+0

至少你可以在你的答案中張貼,作爲一個建議:) –

相關問題