jQuery 嵌套跨度文本值

标签 jquery

<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/

相关文章:

php - JQGRID,如何在网格中多选行并在单击时将所选数据发布到数据库?

javascript - 实时聊天重新加载对象以设置新组

javascript - html 中的平移和可缩放 View 容器

javascript - 如何使用 jQuery 触发表内的按钮?

javascript - 创建的 HTML 元素的 jQuery 选项

javascript - 在按下按钮时执行 jquery 自动完成

javascript - 将鼠标悬停在列表上时显示文本

javascript - 原生 javascript 到 jQuery 等效的简单代码

javascript - 从 jQuery/JavaScript 实现滚动的替代方法

jquery - 预加载器未捕获错误 "e.indexOf - is not a function."