JQuery - 为变量分配方法

时间:2018-04-20 01:34:36

标签: javascript php jquery

我正在根据另一位开发人员编写的代码创建一个新的网页。但是,有一部分代码让我感到困惑,我找不到任何有用的答案/提示。

所以我想要完成的是动态地向表中添加行。原始代码如下:

$('#botton').on('click',function(){
    var table = $('#table') ;
    var tr = table.find('tr').first().clone().appendTo(table);

    tr.find('select').selectpicker('val', '');
    tr.find('input').val('');
});

令我感到困惑的是var tr的工作原理。我理解代码的方式是:它首先获取当前表,然后克隆第一行并将其附加到当前表。然后找到该行并清理所有先前的输入。

但是,由于我们在清理之前使用appendTo(table),这两个代码怎么样 tr.find('select').selectpicker('val', ''); tr.find('input').val('');

还会对附加到表格中的内容产生影响吗?

我做了一些测试并改变了这样的代码

$('#botton').on('click',function(){
    var table = $('#table') ;
    var tr = table.find('tr').first().clone();

    tr.appendTo(table); 

    tr.find('select').selectpicker('val', '');
    tr.find('input').val('');
});

这段代码对我来说似乎相同但是

tr.find('select').selectpicker('val', ''); tr.find('input').val('');

不再对它附加到桌子上的内容产生影响。

这是我的第一篇文章,所以如果我犯了任何编辑错误,我会道歉。万分感谢!

1 个答案:

答案 0 :(得分:1)

appendTo()的返回值是附加的jQuery对象,即

el1 = el2.appendTo(table);

相当于:

el2.appendTo(table);
el1 = el2;

因此,您发布的代码会将tr设置为clone()的结果,即添加的新行。然后,以下tr.find()调用该行中的搜索。

与大多数流畅的接口一样,jQuery中的一般规则是,如果方法不具有更具体的返回值,则方法返回它们被调用的对象,以允许对象链接。所有这些obj.method() 调用返回obj。这就是为什么append()appendTo()container.append(child)返回containerchild.appendTo(container)返回child