Javascript 单击TR时确定目标TD

Javascript 单击TR时确定目标TD,javascript,jquery,Javascript,Jquery,给定某个表行的单击事件: $("tr.somerow").click(function(){ //do some stuff //can I determine the TD under the cursor at the time of clicking? }) 我能否确定单击时光标下有哪些TD(或任何子元素) $("tr.somerow").click(function(e){ var target = $(e.target); // sets to the td or

给定某个表行的单击事件:

$("tr.somerow").click(function(){
    //do some stuff
    //can I determine the TD under the cursor at the time of clicking?
})
我能否确定单击时光标下有哪些TD(或任何子元素)

$("tr.somerow").click(function(e){
  var target = $(e.target); // sets to the td or the element that was clicked
  //do some stuff
})

要查找单击的
而不考虑任何子元素,请使用
var target=$(e.target).closest(“td”)

如果您能够更改脚本,则可以这样做以利用jquerys函数。这避免了有多个绑定的click事件,并且在事件处理程序中,该上下文将是clicked td元素的上下文

$('tr.somerow').delegate('td', 'click', function(){

   //this refers to the td

})

有几个答案基本上是正确的,但其中一个漏掉了最接近的答案,而另一个做了很多不必要的错误处理

$("tr.selector").click(function(e){
    var td = $(e.target).closest('td');
});

将click事件放在TDs上并从那里确定TR会更容易。@RoToRa-我确实想到了这一点,但我不确定是否可以绑定数百个单元格,而不是几十行。您还必须处理填充以及单元格之间的间隙是否会产生点击。您的示例有一个小错误。如果我有
锚定
并单击锚定文本,它将不会选择
td
。您还需要一个最近的
选择器。@shesek,问题是“我可以确定哪个TD(
或任何子元素
)”这是最好的解决方案,唯一的警告是开发人员需要知道委托将绑定到将来创建的任何“tr.somerow”。@David不会。您将其与live@shesek.相混淆。委托(选择器、事件类型、处理程序)返回:jQuery描述:根据一组特定的根元素,现在或将来为与选择器匹配的所有元素的一个或多个事件附加处理程序。“现在或将来”-委托与live相同,但是它也处理重新绑定
这个
,并且它在事件传播中被调用得稍早一些@David Souther-您不正确-它将匹配选择器内部的任何新td,但不匹配新tr.somerow元素