我有一张这样的表:
<table><tbody id="foo">
<tr id="1"><td>a</td><td>b</td></tr>
<tr id="2"><td>c</td><td>d</td></tr>
<tr id="3"><td>e</td><td>f</td></tr>
</tbody></table>
当我应用jQuery操作时:
$('#foo').append($('#1'),$('#2'));
然后我得到以下(预期)结果:
+-+-+
|e|f|
+-+-+
|a|b|
+-+-+
|c|d|
+-+-+
我想将append()
函数嵌入到另一个函数myAppend()
中,我这样做了:
$.fn.myAppend = function(s){
this.append(s);
// something to be, which is irrelevant to this question
};
$('#foo').myAppend($('#1'),$('#2'));
结果与上面不同,我得到了这个(无意识的):
+-+-+
|c|d|
+-+-+
|e|f|
+-+-+
|a|b|
+-+-+
为什么结果不同?如何使myAppend()
的工作方式与append()
相同?
答案 0 :(得分:1)
您没有将第二个参数传递给append
。使用Function.prototype.apply
调用append
方法,其变量编号为arguments
。为了能够链接方法调用,请从方法中返回this
。
$.fn.myAppend = function() {
return this.append.apply(this, arguments);
}
答案 1 :(得分:0)
您不需要将$('#1')
和$('#2')
这两个参数传递给myAppend
函数。
默认情况下,函数采用第一个参数,即$('#1')
并仅附加它。
或者您需要为要追加的每个项目使用循环
答案 2 :(得分:0)
你在函数参数中传递了两个选择器,但是你在那里使用了一个,所以你可以尝试将它作为一个数组传递给自定义myAppend
函数:
$('#foo').myAppend([$('#1'),$('#2')]);