jQuery each()不会迭代所有元素

jth*_*man 3 javascript jquery

我已经盯着这个显然不起作用的小代码了.为什么不选择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>
Run Code Online (Sandbox Code Playgroud)

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++;

    }
 });
});
Run Code Online (Sandbox Code Playgroud)

另见我的jSfiddle:http://jsfiddle.net/ft6Bd/1/

我在Firefox中收到错误

TypeError:无法将undefined转换为object

在线上 alteredSelects[i][0] = $(this).attr('rel');

但似乎无法实现原因.

Cer*_*rus 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++;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

问题是,您试图保存的东西alteredSelects[i],而alteredSelects[i]null.