代码之家  ›  专栏  ›  技术社区  ›  wesgarrison

jquery:value()和text()不返回表单元格的文本

  •  4
  • wesgarrison  · 技术社区  · 16 年前

    我一定是错过了一些基本的东西。启发我。

    我正在尝试获取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选项卡,我会发现我有“childnodes”和“firstchild”以及 <TextNode textContent="289"> 但我不知道怎么找回它。

    3 回复  |  直到 16 年前
        1
  •  9
  •   SLaks    16 年前

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

    使用jquery对象的索引器( $(...)[0] )将返回原始的dom元素。
    如果要调用jquery方法,则需要直接在jquery对象上调用它们,而不使用索引器。
    如果要对jquery集中的单个元素调用jquery方法,请调用 eq ,像这样: $(...).eq(3).text() .

    没有 value() jQuery中的方法。
    这个 val 方法将设置或返回窗体元素的值。

        2
  •  2
  •   Alex Sexton    16 年前

    当使用括号表示法从jquery对象中获取对象时,它将获取一个原始的dom元素。代替使用 $('selector').eq(0) . 那么你的方法就可以了。

        3
  •  0
  •   Dancrumb    16 年前

    .text() 返回一个元素中的所有文本,这样可以工作。

    如果看不到更多的HTML,就无法知道

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

    匹配相关元素