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

Javascript 我的代码有什么问题,试图获取第一个元素文本jquery?,javascript,jquery,html,Javascript,Jquery,Html,看看我的代码,我想让它变成这样,当用户单击表tr时,我将得到第一个td文本,因此jquery我使用first()然后使用text(),但它同时响应td 1和td apple。我只想得到第一个td文本,我做错了什么?谢谢 var gridtable=$('.gridtable'); gridtable.click(函数(){ var name=$(this.first().text(); 警报(“名称”); }) 1. 苹果 2. 香蕉 内部处理程序此指单击的tr应用方法将检索相同的tr本身。

看看我的代码,我想让它变成这样,当用户单击表tr时,我将得到第一个td文本,因此jquery我使用first()然后使用text(),但它同时响应td 1和td apple。我只想得到第一个td文本,我做错了什么?谢谢

var gridtable=$('.gridtable');
gridtable.click(函数(){
var name=$(this.first().text();
警报(“名称”);
})

1.
苹果
2.
香蕉

内部处理程序
指单击的
tr
应用方法将检索相同的
tr
本身。相反,您需要过滤掉嵌套的
td
元素。您可以使用伪类选择器获取第一个元素

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(函数(){
var name=$('td:first',this).text();
警报(名称);
})

1.
苹果
2.
香蕉

内部处理程序
指单击的
tr
应用方法将检索相同的
tr
本身。相反,您需要过滤掉嵌套的
td
元素。您可以使用伪类选择器获取第一个元素

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(函数(){
var name=$('td:first',this).text();
警报(名称);
})

1.
苹果
2.
香蕉

由于要在tr级别连接click处理程序,因此需要使用该功能选择tr中的所有td,然后选择第一个td:

var name = $(this).find('td').first().text();

由于要在tr级别附加click处理程序,因此需要使用函数选择tr中的所有td,然后选择第一个td:

var name = $(this).find('td').first().text();

var gridtable
指的是您的
tr
元素,因此当引发
$element.click
时,
gridtable.first()

您可以使用
.gridtable.children()
获取
gridtable
的子级,然后使用
.first()
子级

请看一下这个例子:

编辑1-
正如@JaromandaX所说,您应该使用
var name=$(this)
来获取单击的行。

var gridtable
指的是您的
tr
元素,因此当
$element.click
被提升时,
gridtable.first()
用class
.gridtable
定位第一个元素

您可以使用
.gridtable.children()
获取
gridtable
的子项,然后使用
.first()

请看一下这个例子:

编辑1-
正如@JaromandaX所说,您应该使用
var name=$(this).
来获取单击的行。

我认为下面的代码将帮助您,它对我有用

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

我认为下面的代码会帮助你,它对我有用

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

first不返回第一个子元素,它返回第一个匹配的查询元素-在您的例子中,tr-正如在click函数中,$中只有一个元素(this),您可以执行
$(this)。children().first().text()
first不返回第一个子元素,它返回第一个匹配的查询元素-在您的例子中,tr-正如在click函数中,$(this)中只有一个元素一样,您可以执行
$(this).children().first().text()
当然应该是
警报(名称)
当然应该是
警报(名称)
不要在要使用
$的单击中使用具有多个tr的gridtable(此)
作为起点不要在要使用
$(此)
作为起点的单击中使用gridtable(具有多个tr)