issue with insertBefore()

issue with insertBefore()

本文关键字:insertBefore with issue      更新时间:2023-09-26

我得到了一个小对象,它必须将新行追加到表..它在大多数情况下工作得很好,但如果有一个表在一些行(在"根"表)对象不追加到适当的表!

我一直在做一些调试,发现这一行都出错了。如果设置了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);
        }
    };
}

这是因为:

var elm = $('tr', tbl);

…相当于:

var elm = $(tbl).find('tr');

因此它将在任何嵌套的<table>中定位所有嵌套的<tr>元素。

你可以这样写:

var elm = $(tbl.rows); // if `tbl` is the DOM element

或:

var elm = $(tbl[0].rows); // if `tbl` is a jQuery object

现在elm只引用tblrows,而不是任何嵌套的<table>元素。