jquery数组.val()

时间:2010-12-10 14:45:54

标签: jquery arrays

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

if (x == 0) {
            $("#scenariotitle").val('');
            $("#scenariosuffix").val('');
}

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

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

编辑:我决定使用这个...

$("#scenariotitle, #scenariosuffix, #scenariosuffix, #scenariosuffix").val("");

...这就是我接受以下答案的原因。 ,关于如何正确使用jquery数组选择器的评论和其他答案中有一个非常好的讨论。

4 个答案:

答案 0 :(得分:7)

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

selector #1, selector #2, selector #3

$("#scenariotitle, #scenariosuffix, #scenariosuffix, #scenariosuffix").val("");

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

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

答案 1 :(得分:5)

您可以将选择器存储在一个数组中,然后根据需要将它们组合使用,如下所示:

var selectors = ["#scenariotitle", "#scenariosuffix"];
$(selectors.join(", ")).val("");

然后使用.join()将数组转换为multiple selector(逗号分隔)以一次性获取所有元素。

答案 2 :(得分:2)

Crozin已经提到了一种基于ID重置的好方法,所以我不会重复他的解决方案。您可以考虑的另一个选项是使用类选择器。

如果您的HTML看起来像这样:

<input type='text' name='scenariotitle' class='resettable' />
<input type='text' name='scenariosuffix' class='resettable' />
<input type='text' name='scenariosomething' class='resettable' />
<input type='text' name='scenarioagain' class='resettable' />

然后你就可以拥有:

$(".resettable").val("");

答案 3 :(得分:1)

为Crozin写的内容添加一个额外的案例(这是正确的)。如果您需要随着时间的推移累积列表,只需将它们添加到jQuery对象。

var blankList = $();

...

blankList = blankList.add('#scenarioTitle');
...
blankList = blankList.add('#scenarioSuffix, #secondSuffix');
...

if (x == 0) {
    blankList.val('');
}