Jquery将li元素添加到数组中

时间:2014-01-06 00:51:15

标签: javascript jquery arrays

我有以下html:

        <ul id="note-item-lists" class="list-group list-group-sp">
    <li id="1" class="list-group-item">
        <div id="note-4" class="view">
            <button class="destroy close hover-action">×</button>
            <div class="note-name">
                <strong id="new_note_title"> New note </strong>
            </div>
        </div>
    </li>
    <li id="2" class="list-group-item">
        <div id="note-4" class="view">
            <button class="destroy close hover-action">×</button>
            <div class="note-name">
                <strong id="new_note_title"> Old note </strong>
            </div>
        </div>
    </li>
  </ul>

现在我希望将这两个<li>存储到一个数组中。

为此,我创建了以下javascript代码:

    var notes = new Array();

$('.list-group-item').each(function(){
    notes[$(this).id] = $(this);
});

然而,当我调试时,我得到一个空的array任何想法?

2 个答案:

答案 0 :(得分:3)

你快到了。 id是DOM节点的属性,而不是jQuery对象的属性,因此您应该使用this.id而不是$(this).id

var notes = [];
$('.list-group-item').each(function() {
    notes[this.id] = $(this);
});

请注意,您的第一个li元素的id1,但Javascript数组为零索引,因此notes的第一个元素(即{ {1}})将notes[0]。我建议按照它们出现的顺序将它们推到阵列上:

undefined

答案 1 :(得分:0)

如果您正在检查chrome控制台,则应将其声明为对象,因为您将其用作对象。 Chrome在控制台中的数组很奇怪(好吧,他们做得对,因为javascript数组基本上是对象,而且本身没有关联数组):

x = new Array()
//[]
x['a'] = 1
//1
x
//[]

可是:

x = {}
//Object {}
x['a'] = 1
//1
x
//Object {a: 1}