2010-11-06 85 views
1
<div id="divBase0" class="divBase"> 
<span id="p0" class="displayText">text line 1</span> 
<span id="l0" class="displayText">text line 2</span> 
<span id="f0" class="displayText">text line 3</span> 
<span id="d0" class="displayText">text line 4</span> 
<span id="t0" class="displayText">text line 5</span> 
</div> 

我有我的頁面上面的div和跨度。在下面的代碼我能夠獲得P0的ID(警報(PID)。不過,我真的想P0的範圍內的文本。jQuery嵌套跨文本值

$("div[id^='divBase']").live("click", function() { 
    var pID = $(this).find("span[id^='p']").attr("id"); 
    alert(pID); 
}); 

我要指出,我生成的div和跨度(用jQuery寫出來),這就是爲什麼我有.live的原因,我是否是在divBase0中查找嵌套跨度的最佳方法?其次,我怎樣才能獲得?!在跨度P0文本

感謝

回答

3

只需使用.text()拿到裏面的文字,就像這樣:

$("div.divBase").live("click", function() { 
    var pText = $(this).find("span[id^='p']").text(); 
    alert(pText); 
}); 

這是最好的方法嗎?如果你需要的ID的話,當然,如果不是就用類,像這樣:

<div class="divBase"> 
    <span class="p displayText">text line 1</span> 
    <span class="l displayText">text line 2</span> 
    <span class="f displayText">text line 3</span> 
    <span class="d displayText">text line 4</span> 
    <span class="t displayText">text line 5</span> 
</div> 

而使用類在你的函數:

$("div.divBase").live("click", function() { 
    alert($(this).find("span.p").text()); 
}); 

一步到位將處理程序被連接到父元素中的所有這些.divBase元件與.delegate(),像這樣:

$("#divContainer").delegate("div.divBase", "click", function() { 
    alert($(this).find("span.p").text()); 
}); 

這消除了初始選擇性能成本以及作爲謝每次或將來的點擊次數。

+0

..謝謝......那完美的作品......我必須嘗試每一種組合,但是......粉碎它到星期五晚上腦糊......再次感謝! – webdad3 2010-11-06 00:20:21

+0

@Jeff - 歡迎:) – 2010-11-06 00:21:16