我已经盯着这个显然不起作用的小代码了。为什么不选择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:无法将undefined转换为object
在alteredSelects[i][0] = $(this).attr('rel');
但似乎无法理解为什么。
答案 0 :(得分:6)
首先必须初始化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
。
答案 1 :(得分:0)
这不是答案,但你不应该使用自己的声明变量进行索引: 每个jquery都有自己的索引:
$.each(collection, function(index, value) {
});