对象在一个参数内传递多个参数

时间:2013-07-10 14:20:51

标签: javascript jquery object for-loop

我正在尝试为某个类的对象传递多个数字。这里预览了我正在尝试的作品

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();
    }
  }

2 个答案:

答案 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();
}