【发布时间】:2014-07-05 19:41:37
【问题描述】:
我有一组类存储在一个名为“targets”的 JavaScript 数组中,如下所示:
HTML
<div id="one">1</div>
<div id="two">2</div>
<div id="three">3</div>
<div id="four">4</div>
<div id="five">5</div>
<div id="six">6</div>
<div id="seven">7</div>
<div id="eight">8</div>
<div id="nine">9</div>
<div id="ten">10</div>
JavaScript — 数组
var targets = ["#one", "#two", "#three", "#four", "#five", "#six", "#seven", "#eight", "#nine", "#ten"];
然后我想操纵它们以在函数中使用。根据我的情况,我要么想定位数组中的一个特定 ID,要么一次定位数组中的所有条目。我知道数组中的每个条目都有一个唯一的索引号,从 0 开始。因此,#one 是索引 0,#ten 是索引 9。
我也知道我可以将for 循环与数组一起使用,这将循环遍历每个条目。我的问题是,当从点击事件(在 input type="button" 元素上)调用我的函数时,我似乎无法正常工作。
这是我的代码的两个示例。一个针对一个特定条目,另一个针对所有条目。或者至少,这是它应该做的。 Chrome 的控制台显示我的代码没有错误,而且我从未真正使用过数组,所以这对我来说是第一次。
JavaScript — 尝试定位单个条目(工作)
$(targets[0]).addClass('hide').removeClass('show');
JavaScript - 尝试定位所有条目 I
$(targets).each(function() {
$(this).addClass('hide').removeClass('show');
});
JavaScript - 尝试定位所有条目 II
targets.forEach(function() {
$(targets).addClass('hide').removeClass('show');
});
JavaScript - 尝试定位所有条目 III
var i;
for ( i = 0; i < targets.length; ++i ) {
$(targets).addClass('hide').removeClass('show');
}
另外,我知道 jQuery 允许您通过代码的 $() 部分传递多个值来一次操作多个类和/或 ID,但我处于数组条目将是的困境不同,取决于用户输入,我觉得我总共将操作超过 250 个不同的 ID 和类。我只是省略了前 10 个元素的 HTML 代码。
250 个 ID/类中的大多数位于 <option> 元素上。代码中使用的.show 和.hide 类并不直接应用于<option> 元素本身,而是应用于包含这些选项的<select> 元素。每个<select> 元素都有一个唯一的ID。
如果我能弄清楚如何用数组做到这一点,一切都会好起来的。
谢谢。
【问题讨论】:
-
过多地使用
each。可以对整个集合执行大多数 jQuery 方法。$(selector)在 jQuery 对象中创建一个元素数组 -
总的来说,我会说你的方法比它需要的更复杂
标签: javascript jquery arrays function