jQuery each()不会对所有元素进行迭代
jQuery each() doesn't iterate on all elements
我已经盯着这个显然不工作的小块代码太久了。为什么不提醒select box rel属性?
HTML:<select rel="prop216" name="prop[]">
<option value="">- none</option>
<option value="12">Opt 1</option>
<option value="13">Opt 2</option>
</select>
<select rel="prop217" name="prop[]">
<option value="">- none</option>
<option value="12">Opt 1</option>
<option value="13">Opt 2</option>
</select>
jQuery: $("select").change(function()
{
var i = 0;
var alteredSelects = [];
$("select").each(function()
{
if ( $(this).val() !== "" )
{
alteredSelects[i][0] = $(this).attr('rel');
alteredSelects[i][1] = $(this).val();
alert ($(this).attr('rel'));
i++;
}
});
});
参见我的jSfiddle: http://jsfiddle.net/ft6Bd/1/
我在Firefox中得到一个错误
TypeError: can't convert undefined to object
在alteredSelects[i][0] = $(this).attr('rel');
但似乎不知道为什么。
首先要初始化alteredSelects[i]
,然后才能给它赋值:
$("select").change(function() {
var i = 0;
var alteredSelects = [];
$("select").each(function() {
if ( $(this).val() !== "" ) {
alteredSelects[i] = []; // <-- Initialize `alteredSelects[i]` as empty array.
alteredSelects[i][0] = $(this).attr('rel');
alteredSelects[i][1] = $(this).val();
alert($(this).attr('rel'));
i++;
}
});
});
问题是,你试图保存一些东西到alteredSelects[i]
,而alteredSelects[i]
是null
。
这不是答案,但你不应该使用自己声明的变量进行索引:jquery各有自己的Index:
$.each(collection, function(index, value) {
});
相关文章:
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 为什么这只是迭代 HTMLCollection 的奇怪元素
- 每个$.,循环获胜't逐个迭代HTML元素
- 在JSON数组中进行迭代,并为其元素设置样式
- 使用.ech()迭代具有类似类名的元素
- 自动完成搜索无法正常工作,请不要迭代$中的所有元素.每个ul-li都会及时显示响应
- 迭代 coffeescript 中的 jQuery DOM 元素: $(@).捷径
- 如何迭代具有相同ID的元素
- DOM:如何根据迭代器值设置元素宽度并在mouseover上调用函数
- 在JS对象元素上迭代并更改它们
- 迭代JSON对象并将元素打印到屏幕上的最佳方式是什么
- 如何访问迭代模板中的任何元素
- javascript通过逻辑连接的元素对进行迭代
- 使用for.of迭代时删除集合中的元素是否安全
- 如何在数据数组的每次迭代中创建一个内容为“i+1”的新 HTML 元素
- JQuery 添加表单元素迭代 ID
- 每个,从开始元素迭代
- 无法使用守夜人中的元素迭代元素
- Javascript中的表单元素迭代
- jQuery 从子元素迭代内部子元素