最简洁的方式来引用jQuery中新创建的对象?

时间:2009-10-22 23:50:28

标签: jquery traversal

我在TD中点击链接时调用了一个函数。单击后,我遍历DOM到链接所在的TR,然后在它之后创建一个新的TR。

到目前为止一切顺利。

现在我已经创建了新的TR,其中包含TD,现在最好的是指新创建的TD。或者,我是否需要遍历我从原始点击对象创建的新TD?

$("td.expandable a").click(function(){
    // figure out the number of columns we need to span
    var colspan;
    colspan = $(this).parents("tr").children("td").size();

    // insert the new TR
    $(this).parents("tr").after("<tr><td colspan=' & colspan & '></td></tr>");

    // **what syntax would I use here to refer to the above made TD?**

    return false;
});

2 个答案:

答案 0 :(得分:1)

$("td.expandable a").click(function(){
        // figure out the number of columns we need to span
        var colspan = $(this).parents("tr").children("td").size(),
            tr = $("<tr><td colspan=' & colspan & '></td></tr>");

        // insert the new TR
        $(this).parents("tr").after(tr);

        // **what syntax would I use here to refer to the above made TD?**
        tr.find('td')

        return false;
});

如果您要更新一个 tr,也可以将parents替换为closest。另一种更加手动的方式就是...... $(this).parents('tr').next().find('td')

答案 1 :(得分:0)

insertAfter()。wrap()方便这类事情:

$('td.expandable a').click(function() {
    var $parent = $(this).parents('tr');
    var colCount = $parent.children('td').size();
    var $td = $('<td colspan=' + colCount + '></td>');
    $td.insertAfter($parent).wrap('<tr></tr>');
    return false;
});

我使用字符串连接运算符“+”。 “&安培;”用于整数计算按位AND。