我有一个小对象,它必须在表中添加新行。在大多数情况下它工作正常,但是如果某些行中有一个表(在“根”表中),则该对象不会附在正确的桌子上!?
我一直在做一些调试,发现一切都出错了。如果设置了DEBUG并且省略了insertBefore()的行,那么对象会附加到正确的表
var List = new function(){
this.append_row = function(row, tbl, index){
if(DEBUG){
index = -1;
}
if(index == 0){
row.prependTo(tbl);
}
else if(index > 0){
var elm = $('tr', tbl);
if(elm.length > index){
row.insertBefore(elm.eq(index)); // the issue is in this line
}
else{
row.appendTo(tbl);
}
}
else{
row.appendTo(tbl);
}
};
}
答案 0 :(得分:2)
这是因为:
var elm = $('tr', tbl);
......等同于:
var elm = $(tbl).find('tr');
因此,它将在任何嵌套的<tr>
中找到所有嵌套的<table>
元素。
所以你可以这样做:
var elm = $(tbl.rows); // if `tbl` is the DOM element
或者这个:
var elm = $(tbl[0].rows); // if `tbl` is a jQuery object
现在elm
只能引用rows
的{{1}},而不是任何嵌套的tbl
元素。