获取下一个元素文本

时间:2017-03-13 14:03:06

标签: jquery

我有一个jquery我正在运行以获得第一个< a>标记文本,但它似乎得到了所有的元素,我不知道我做错了什么。

<tr>
<td>
    <a>text 1</a>
</td>
<td>
    <a>text 2</a>
</td>
<td>
    <a>text 3</a>
</td>
<td>
    <a>text 4</a>
</td>
<button>click</button>
</tr>

 $(button).on('click',function(){
     var getText = $(this).closest('tr').next().find('a:first-child');
     var getText = $(this).closest('tr').next().find('a:nth-child(1)');//tried this too
 })

因此变量的结果应为“text 1”。现在它返回所有&lt; a&gt;标签

5 个答案:

答案 0 :(得分:2)

所有a标记都是其父级的第一个子标记,因此请在第一个a元素中获取td标记。如果您希望在同一a元素中获取tr标记,则无需使用next()方法。

 var getText = $(this).closest('tr').find('td:first-child a');

仅供参考:您的标记无效,因为您无法将button标记用作tr标记中的子标记,唯一allowed tags are td and th。因此,请将button标记移至td中的任何一个,或添加新的td元素。

答案 1 :(得分:2)

首先,该按钮也应位于<td>,因为它不是<tr>的合法子女。

然后,您要查找表格行。 closest(tr)在树上行进并找到那一排。

您使用next(),这将选择下一个行...但您不希望这样。所以删除它。

然后你想找到第一个表格单元格并在单元格内找到锚点(所以不是第一个锚点)。我们使用find(td:first-child a)

最后......使用$(this).closest('tr').find('td:first-child a')获取对象(元素)。如果您想在其中使用文字,请使用text() - 函数。

所有在一起:

&#13;
&#13;
$('button').on('click', function() {
   var getText = $(this).closest('tr').find('td:first-child a').text();
   console.log(getText);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>
      <a>text 1</a>
    </td>
    <td>
      <a>text 2</a>
    </td>
    <td>
      <a>text 3</a>
    </td>
    <td>
      <a>text 4</a>
    </td>
    <td>
      <button>click</button>
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用a:nth-of-type(1)将解决选择器问题 如

('a:nth-of-type(1)').text()

答案 3 :(得分:0)

尝试以下方法:

$(button).on('click',function(){
     var getText = $(this).closest('tr').next().find('td:first a').html();
 });

答案 4 :(得分:0)

您必须添加.text()函数,如下所示

$(button).on('click',function(){
 var getText = $(this).closest('tr').next().find('a:first-child').text();
 var getText = $(this).closest('tr').next().find('a:nth-child(1)').text();//tried this too
 })