我写了这个jquery代码:
<script type="text/javascript">
$(document).ready(function () {
var university = { title: 0, href: 1, link: 2 };
var universities = [];
$(".aname").each(function (key, value) {
university.href = value.all[0].href;
university.title = value.all[0].innerHTML;
university.link = value.parentNode.all[2].all[0];
universities[key] = university;
});
debugger; // now if you watch universities this only last item.
});
</script>
它应该将所有大学对象保存到它工作的大学阵列中,但是它只会在$。之后替换所有项目中的最后一项。我不知道为什么?
答案 0 :(得分:2)
怎么样:
var universities = $( '.aname' ).map(function () {
return {
href: this.all[0].href,
title: this.all[0].innerHTML,
link: this.parentNode.all[2].all[0]
};
}).get();
但是,我不认为all
集合是跨浏览器的。在这种情况下,请考虑使用jQuery的遍历方法或本机方法替换它。例如,如果all[0]
选择第一个孩子(是吗?),那么您可以写this.children[0]
或$( this ).children( ':first' )
。
答案 1 :(得分:1)
因为您修改了全局大学对象而不是创建新大学对象。请注意,当您使用运算符'='时,javascript复制引用对象而不是对象。如果你想深度复制对象,你可以使用jQuery.extend函数。
试试这个:
var universities = [];
$(".aname").each(function (key, value) {
var university = {};
university.href = value.all[0].href;
university.title = value.all[0].innerHTML;
university.link = value.parentNode.all[2].all[0];
universities[key] = university;
});
答案 2 :(得分:0)
我认为您可能需要使用数组的.push()函数向其中添加项目:
$(document).ready(function () {
var university = { title: 0, href: 1, link: 2 };
var universities = [];
$(".aname").each(function (key, value) {
university.href = value.all[0].href;
university.title = value.all[0].innerHTML;
university.link = value.parentNode.all[2].all[0];
universities.push(university);
});
debugger; // now if you watch universities this only last item.
});