我的代码有什么问题,试图获得第一个元素文本jquery?

时间:2016-08-25 04:15:29

标签: javascript jquery html

看看我的代码,我想这样做,当用户点击表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;
&#13;
&#13;

5 个答案:

答案 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);
});

&#13;
&#13;
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;
&#13;
&#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/

编辑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);
      })