我有以下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
任何想法?
答案 0 :(得分:3)
你快到了。 id
是DOM节点的属性,而不是jQuery对象的属性,因此您应该使用this.id
而不是$(this).id
。
var notes = [];
$('.list-group-item').each(function() {
notes[this.id] = $(this);
});
请注意,您的第一个li
元素的id
为1
,但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}