jquery数组.val()

Mr.*_*Ant 1 arrays jquery

我在下面有这个代码......

if (x == 0) {
            $("#scenariotitle").val('');
            $("#scenariosuffix").val('');
}
Run Code Online (Sandbox Code Playgroud)

......工作正常.但是,该列表将增加到大约5个jquery选择.

有没有办法将它们存储到数组中,然后对数组中的所有元素使用.val('')函数?如果可能,它会更有效吗?如果列表不超过10,我应该坚持单独列出它们吗?

编辑:我已决定使用此...

$("#scenariotitle, #scenariosuffix, #scenariosuffix, #scenariosuffix").val("");
Run Code Online (Sandbox Code Playgroud)

......这就是为什么我接受了下面的答案.但是,在如何正确使用jquery数组选择器的注释和其他答案中有一个非常好的讨论.

Cro*_*zin 7

您可以将多个选择器连接成一个语句:

selector #1, selector #2, selector #3

$("#scenariotitle, #scenariosuffix, #scenariosuffix, #scenariosuffix").val("");
Run Code Online (Sandbox Code Playgroud)

当然你可以使用数组,但在这种情况下它是毫无意义的:

var selectors = [ "selector #1", "selector #2", "selector #n" ];
for (var i=0; i<selectors.length; i++) {
    $(selectors[i]).val("");
}
Run Code Online (Sandbox Code Playgroud)

  • Noooo,**从不**使用`for ... in`循环迭代数组,它是*枚举*. (3认同)
  • @Orbling - 不,不是.你不在这种说法的基础上,他们会产生不同的结果.例如,在IE中,您将在添加的另一个**中迭代数组索引**,而不是**数组**的顺序.你不应该在数组上使用`for(... in ...)`在某些情况下你会得到一个意想不到的顺序,以及不在数组中的**项**,如何你能说这是正确的用法吗?如果您不相信我,请在各种浏览器中尝试此操作,包括IE:http://www.jsfiddle.net/nick_craver/HLB5v/ (2认同)
  • @Orbling - "没有其他属性"....我刚给你一个演示链接,显示会有,证明它......我不确定你是如何做出这个主张的.你正在推广一种非常糟糕的做法,有不良后果和副作用,**为什么?**为什么不以正确的方式做到这一点? (2认同)
  • @Orbling - 或者以正确的方式做到并消除任何错误的可能性.故意?是的,并且*许多*库扩展了Array原型 - 我的例子中唯一的区别就是您可以很好地看到代码,而不是其他地方的库.我不明白你对*以正确的方式做事的厌恶*,我实际上对它感到困惑. (2认同)

Nic*_*ver 5

您可以将选择器存储在一个数组中,然后将它们组合起来以供使用(如果需要),如下所示:

var selectors = ["#scenariotitle", "#scenariosuffix"];
$(selectors.join(", ")).val("");
Run Code Online (Sandbox Code Playgroud)

然后使用数组.join()将其转换为多选择器(逗号分隔)以一次性获取所有元素.