<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 和 span。在下面的代码中,我能够获取 p0 的 id(alert(pID))。但是我真的想获取 p0 范围内的文本。
$("div[id^='divBase']").live("click", function () {
var pID = $(this).find("span[id^='p']").attr("id");
alert(pID);
});
我应该注意到,当表单加载时,我正在生成 div 和 span(用 jQuery 写出它们)。这就是我拥有 .live 的原因。我这样做是在 divBase0 中查找嵌套跨度的最佳方法吗?其次,如何获取 span p0 中的文本?
谢谢!
最佳答案
只需使用 .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());
});
这消除了初始选择器性能成本,并且降低了 future 的点击次数。
关于jQuery 嵌套跨度文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4111146/