【问题标题】:Object passing multiple parameters within one parameter [duplicate]对象在一个参数中传递多个参数[重复]
【发布时间】:2013-07-08 12:42:41
【问题描述】:

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

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

【问题讨论】:

  • 我会看看这个菲利克斯,无论情况如何,在这里见到你总是很高兴,因为你总是把我引向正确的道路。希望这是正确的道路。
  • @FelixKling 如果您想添加答案以便我投票,这是一个巨大的帮助!非常感谢!
  • 我很高兴能帮上忙 :) 如果对另一个问题有帮助,请投票赞成。
  • 哦,我赞成 :D 这么简单的事情,我完全看完了

标签: javascript jquery object for-loop


【解决方案1】:

jQuery 对象是包含原始 DOM 元素的类数组对象。

因此,$(...)[0] 是原始 DOM 元素,而不是 jQuery 对象。

要获取特定元素的 jQuery 对象,请调用 .eq()


编辑:您还在寻找特殊的 arguments 类数组对象,您可以循环访问该对象以获取传递给您的函数的所有参数。

【讨论】:

  • 上面的代码适用于一个参数,但对于多个它不起作用,所以我必须在正确的路径上做一些事情。
  • @EasyBB:什么意思?
  • @EasyBB:听起来您实际上是在要求 arguments 变量。
  • 是的,我的意思是对不起,函数中的参数。基本上我想让它让用户可以输入 (0,1,2) 或任何数字,然后它将删除原始 DOM 中的那些相应元素。
【解决方案2】:

您的逻辑存在问题,即由于您在循环的每次迭代中删除了匹配集的一个元素,因此您不会删除索引为 0,1 和 2 的初始元素(在这种情况下,您'd 最终会删除原始集合的元素 0、2 和 4) 。此外,您在每次迭代时都调用$('.group'),这不是最优的,如果您利用缓存变量,然后逐个添加您需要的元素,然后您可以在结果集上调用 remove .

您可以将您的功能更改为:

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

编辑:考虑到 SLaks 的回答和 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();
}

【讨论】:

  • 我会用这个,所以基本上你是说arguments参数不好
  • 您还可以在循环之前选择所有.group 元素(而不是在循环内选择它们)。那么你所要做的就是$current = $current.add($groups[arguments[i]]);
  • @EasyBB 我觉得arguments 不错,看我更新的答案...
  • @FelixKling 确实是个好建议,我只是相应地更新了答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多