我正在尝试为某个类的对象传递多个数字。这里预览了我正在尝试的作品
group: function(number) {
for(var i=0;i<number.length;i++){
groups=number[i];
$('.group')[groups].remove();
}
}
我试图让它像它一样
code.destroy.group(0,1,2);
这样做会删除$('.group')[0]
$('.group')[1]
和$('.group')[2]
我必须做错了,否则这将正常工作。有人能引导我走上正确的道路。
感谢Felix King带领我走上了正确的道路:
我所要做的就是使用arguments参数
group: function() {
for(var i=0;i<arguments.length;i++){
$('.sceditor-group')[arguments[i]].remove();
}
}
答案 0 :(得分:2)
jQuery对象是包含原始DOM元素的类数组对象。
因此,$(...)[0]
是原始DOM元素,而不是jQuery对象。
要获取特定元素的jQuery对象,请调用.eq()
。
编辑:您还在寻找特殊的arguments
类似数组的对象,您可以遍历该对象以获取传递给您的函数的所有参数。
答案 1 :(得分:1)
您的逻辑存在问题,那就是因为您在循环的每次迭代中删除匹配集的元素,所以不会删除索引为0,1&amp;的初始元素。 2(在这种情况下,你最终会删除原始集合的元素0,2和4)。你也在每次迭代时调用$('.group')
这不是最佳的,如果你利用缓存变量,然后逐个添加你需要的元素,那么你就可以调用删除结果集。
您可以将功能更改为:
group: function(number) {
var $current = $();
var $group = $('.group');
for(var i=0;i<number.length;i++){
$current = $current.add($group.eq(number[i]));
}
$current.remove();
}
编辑:考虑到SLAK回答和arguments
的使用而不是期待数组,您可以这样做:
group: function() {
var $current = $();
var $group = $('.group');
for(var i=0;i<arguments.length;i++){
$current = $current.add($group.eq(arguments[i]));
}
$current.remove();
}