Javascript JQuery比较父项(';tr)和查找(';tr:first';)不起作用

Javascript JQuery比较父项(';tr)和查找(';tr:first';)不起作用,javascript,jquery,html,Javascript,Jquery,Html,单击表的某个单元格时,我希望设置该单元格的内容,但前提是该单元格既不在第一行也不在第一列 $('td')。单击(函数(){ log($(this.parents('tr')); log($(“#矩阵”).find('tr:first'); console.log($('#matrix').find('tr:first')==$(this.parents('tr')); if($(this).parents('tr')!=$('#matrix').find('tr:first')){ conso

单击表的某个单元格时,我希望设置该单元格的内容,但前提是该单元格既不在第一行也不在第一列

$('td')。单击(函数(){
log($(this.parents('tr'));
log($(“#矩阵”).find('tr:first');
console.log($('#matrix').find('tr:first')==$(this.parents('tr'));
if($(this).parents('tr')!=$('#matrix').find('tr:first')){
console.log(“正常”);
如果($(this).text()!=“x”){//Connect
$(此).text(“x”);
警报(“正在连接”+
$('td:first',$(this.parents('tr')).text()+
“与”+
$('tr:first',$(this.parents('td')).text());
}否则{//断开连接
$(此).text(“”);
警报(“断开端点连接”+
$('td:first',$(this.parents('tr')).text()+
“带端点”+
$('tr:first',$(this.parents('td')).text());
};
};//仅限行/列>0
}); // 单击()
td{
边框:1px纯黑;
}

矩阵
_名字_
_姓名_
_名字_
_名字_

可能有两个指向同一个dom元素,但对象引用不同。用于检查相等性,请在jQuery中使用方法

console.log( $(this).parents('tr').is($('#matrix').find('tr:first')));

或者通过使用索引或方法获取来比较DOM对象


更新:此外,您可以通过仅为需要更新内容的
td
元素绑定click事件来减少代码。其中使用伪类选择器(纯CSS选择器)过滤td

$(“#矩阵tr:n子(n+2)td:n子(n+2)”。单击(函数(){
//使用带有回调的text方法根据现有内容更新文本
$(this).text(函数(i,txt){
返回txt=='x'?'''x';
})
});

矩阵
_名字_
_名字_
_名字_
_名字_

可能有两个指向同一个dom元素,但对象引用不同。用于检查相等性,请在jQuery中使用方法

console.log( $(this).parents('tr').is($('#matrix').find('tr:first')));

或者通过使用索引或方法获取来比较DOM对象


更新:此外,您可以通过仅为需要更新内容的
td
元素绑定click事件来减少代码。其中使用伪类选择器(纯CSS选择器)过滤td

$(“#矩阵tr:n子(n+2)td:n子(n+2)”。单击(函数(){
//使用带有回调的text方法根据现有内容更新文本
$(this).text(函数(i,txt){
返回txt=='x'?'''x';
})
});

矩阵
_名字_
_名字_
_名字_
_名字_

排除第一行,并在选择器中轻松执行:

$('tr:not(:first) > :not(:first-child)').click(function() {
    //Code
});

排除第一行,并在选择器中更轻松地执行此操作:

$('tr:not(:first) > :not(:first-child)').click(function() {
    //Code
});

您不需要比较对象,只需使用
:gt()
:not()
以及
:first child
选择器来排除第一行和第一列

$(“#矩阵tr:gt(0)td:not(:first child)”)。单击(函数(){
如果($(this).text()!=“x”){
$(此).text(“x”);
}否则{
$(此).text(“”);
};
});

矩阵
_名字_
_名字_
_名字_
_名字_

您不需要比较对象,只需使用
:gt()
:not()
以及
:first child
选择器来排除第一行和第一列

$(“#矩阵tr:gt(0)td:not(:first child)”)。单击(函数(){
如果($(this).text()!=“x”){
$(此).text(“x”);
}否则{
$(此).text(“”);
};
});

矩阵
_名字_
_名字_
_名字_
_名字_