我有一个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;标签
答案 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()
- 函数。
所有在一起:
$('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;
答案 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
})