看看我的代码,我想这样做,当用户点击表tr时,我会得到第一个td文本,所以jquery我使用first()然后是text(),但它回显了两个td 1和td苹果。我只想获得第一个td文本,我做错了什么?升值。
var gridtable = $('.gridtable');
gridtable.click(function(){
var name = $(this).first().text();
alert('name');
})

<tr class="gridtable">
<td>1</td>
<td >apple</td>
</tr>
<tr class="gridtable">
<td>2</td>
<td >banana</td>
</tr>
&#13;
答案 0 :(得分:2)
内部处理程序this
表示点击的tr
应用 first()
方法将检索相同的tr
本身。相反,您需要过滤掉嵌套的td
元素。您可以使用 :first
伪类选择器来获取第一个元素。
var gridtable = $('.gridtable:first');
gridtable.click(function(){
// get the first element within the context
var name = $('td:first', this).text();
alert(name);
});
var gridtable = $('.gridtable');
gridtable.click(function() {
var name = $('td:first',this).text();
alert(name);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr class="gridtable">
<td>1</td>
<td>apple</td>
</tr>
<tr class="gridtable">
<td>2</td>
<td>banana</td>
</tr>
</table>
&#13;
答案 1 :(得分:1)
var gridtable = $('.gridtable');
gridtable.click(function(){
var name = $(this).find('td:first').text();
alert(name);
});
答案 2 :(得分:1)
由于您在tr级别附加了单击处理程序,因此您需要使用find函数选择tr中的所有tds,然后选择第一个td:
var name = $(this).find('td').first().text();
答案 3 :(得分:0)
var gridtable
指的是您的tr
元素,因此在$element.click
被引发时,gridtable.first()
正在定位第一个元素.gridtable
您可以使用.gridtable.children()
来获取gridtable
的孩子,然后使用.first()
请查看此示例:https://jsfiddle.net/gnc9t1p2/1/
正如@JaromandaX所说,您应该使用var name = $(this)...
来获取点击的行。
答案 4 :(得分:0)
我认为下面的代码会帮助你,它对我有用。
var gridtable = $('.gridtable');
gridtable.click(function(){
var name = $(this).find("td:first").text();// for only first td
or
var name = $(this).find("td:eq(0)").text();// you can change index number like eq(0) ,eq(1) for nect td
alert(name);
})