【问题标题】:jQuery: value() and text() not returning table cell's textjQuery:value() 和 text() 不返回表格单元格的文本
【发布时间】:2010-02-24 16:05:20
【问题描述】:

我必须在这里遗漏一些基本的东西。启发我。

我正在尝试获取 ID(本例中为 289):

<tr class="header">
  <th>ID</th>
  <th>2</th>
  <th>3</th>
</tr>

<tr class="highlight">
  <td class="">289</td>
  <td class="">field a</td>
  <td class="">field b</td>
</tr>
... more rows

我正在使用这个选择器:

$("#requests :nth-child(2) td:first")

Firebug 控制台显示如下:

Object { length=1,  more...}

没错。抓住第一个元素:

>>> $("#requests :nth-child(2) td:first")[0]
<td class="">

所以,我想我可以调用 text()value() 或类似的方法。

如果我查看 Firebug 中的 DOM 选项卡,我发现我有 &lt;TextNode textContent="289"&gt; 的“childNodes”和“firstChild”,但我不知道如何检索它。

【问题讨论】:

  • 不是答案,但你应该使用#requests tr:nth-child(2) ...,因为空格是后代选择器而不是子选择器。
  • @Joel Potter:是的,我应该这样做。谢谢!

标签: jquery dom jquery-selectors


【解决方案1】:

你需要写$("#requests :nth-child(2) td:first").text()

使用 jQuery 对象的索引器 ($(...)[0]) 将返回原始 DOM 元素。
如果要调用 jQuery 方法,则需要直接在 jQuery 对象上调用它们,而无需使用索引器。
如果您想在 jQuery 集合中的单个元素上调用 jQuery 方法,请调用 eq,如下所示:$(...).eq(3).text()

jQuery 中没有 value() 方法。
val 方法将设置或返回表单元素的值。

【讨论】:

  • 啊。我比自己聪明。我知道它必须比我做的更容易。
【解决方案2】:

当您使用方括号表示法从 jQuery 对象中抓取一个对象时,它会抓取一个原始 dom 元素。而是使用 $('selector').eq(0) 。那么你的方法应该有效。

【讨论】:

    【解决方案3】:

    .text() 返回一个元素中的所有文本,所以应该可以。

    没有看到更多的 HTML,就无法知道你的

    $("#requests :nth-child(2) td:first")
    

    匹配有问题的元素

    【讨论】:

    • 是的,它确实匹配。为了清楚起见,我排除了一个#content。
    猜你喜欢
    • 2021-09-24
    • 2019-01-24
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2021-10-10
    相关资源
    最近更新 更多