我正在根据另一位开发人员编写的代码创建一个新的网页。但是,有一部分代码让我感到困惑,我找不到任何有用的答案/提示。
所以我想要完成的是动态地向表中添加行。原始代码如下:
$('#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('');
不再对它附加到桌子上的内容产生影响。
这是我的第一篇文章,所以如果我犯了任何编辑错误,我会道歉。万分感谢!
答案 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)
返回container
,child.appendTo(container)
返回child
。