2010-10-12 59 views
1

我有一個問題,以獲得動態加載錨附加到div的ID。這裏是我填充DIV後得到的代碼:jquery問題識別附加錨

<div id="sotto_eti"> 
    <a href="#" id="a">a</a> <a href="#" id="b">b</a> <a href="#" id="c">c</a> 
</div> 

這裏是腳本:

<script> 
$("#sotto_eti a").click(function() 
{ 
    alert($(this).attr("id")); 
}); 
</script> 

在此先感謝您的幫助

僑小時。

回答

1

,如果你將檢索動態添加一個鏈接的ID,你應該使用實時功能來代替:

<script> 
$("#sotto_eti a").live("click", function() 
{ 
    alert($(this).attr("id")); 
}); 
</script> 
0
alert($(this).get(0).id); 

應該工作。

+0

這並沒有真正解決問題。使用'$(this).attr(「id」)'是正確的。你的版本用jQuery包裝'this',然後立即刪除它並訪問'id'屬性。所以這會使'this.id'更有意義。 – user113716 2010-10-12 17:30:00

0

您需要使用live方法動態元素:

$("#sotto_eti a").live('click', function() 
{ 
    alert($(this).attr("id")); 
}); 

Here is working demo

還要確保您在您的網頁jQuery庫。

+0

如果你使用'.live()',那麼不需要用'.ready()'來包裝你的代碼。 http://jsbin.com/agigu3/2/:o) – user113716 2010-10-12 17:25:31

+0

@patrick dw:這很有趣,我會更新。謝謝:) – Sarfraz 2010-10-12 17:26:20

+0

我沒有寫,但我已經使用準備處理程序,但它不起作用:( – haltman 2010-10-12 17:28:47

0

使用live()爲後來添加的元素:

2

您可以use .live()處理動態加載的元素:

$("#sotto_eti a").live('click', function() { 
    alert(this.id); 
}); 

或者更好,use .delegate()這是類似.live(),但更有效。

$(function() { 
    $("#sotto_eti").delegate('a', 'click', function() { 
     alert(this.id); 
    }); 
}); 
+0

'更有效率'你有任何來源? – 2010-10-12 17:30:32

+1

@Rakesh - 基於他們做同樣的事情,但'.delegate()'是本地化的事實。當你執行'.live()'時,jQuery需要測試*每次*點擊頁面上的按鈕,以反映「#sotto_eti a」選擇器。使用'.delegate()',只需要點擊*「#sotto_eti」容器中的*就需要對''a「'選擇器進行測試。另外,因爲頁面上只能有一個'#sotto_eti',所以在這兩種情況下只有*一個*處理程序,所以jQuery管理多個處理程序沒有額外的開銷。 – user113716 2010-10-12 17:35:05

+0

ohk :)所以這裏是我的+1 – 2010-10-13 06:52:24