我想创建一个对象,但它到目前为止还没有工作。
var optionz = [];
$('ul > li > a').each(function( index ) {
optionz [ $(this).attr('href') ] = $(this).children('img').attr('src');
// alert($(this).attr('href')+ " " +$(this).children('img').attr('src'));
});
$.each(optionz, function (index, value) {
alert( index + ' : ' + value );
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul id="ul">
<li><a href="gaga1.com"><img src="1.png"/></a></li>
<li><a href="gaga2.com"><img src="1.png"/></a></li>
<li><a href="gaga3.com"><img src="1.png"/></a></li>
<li><a href="gaga4.com"><img src="1.png"/></a></li>
</ul>
&#13;
我错过了什么?
答案 0 :(得分:0)
您正在创建一个数组,但是您没有将项目放入数组中。而是将属性添加到数组对象。当您遍历数组中的项目时,您将无法找到任何项目,因为没有。
创建一个对象,当您遍历对象属性时,您将找到放入其中的属性:
var optionz = {};
演示:
var optionz = {};
$('ul > li > a').each(function( index ) {
optionz [ $(this).attr('href') ] = $(this).children('img').attr('src');
// alert($(this).attr('href')+ " " +$(this).children('img').attr('src'));
});
$.each(optionz, function (index, value) {
alert( index + ' : ' + value );
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul id="ul">
<li><a href="gaga1.com"><img src="1.png"/></a></li>
<li><a href="gaga2.com"><img src="1.png"/></a></li>
<li><a href="gaga3.com"><img src="1.png"/></a></li>
<li><a href="gaga4.com"><img src="1.png"/></a></li>
</ul>
&#13;
答案 1 :(得分:0)
因为您在数组中创建了键和值并不是真正的对象,所以您应该创建如下:
var optionz = [];
$('ul > li > a').each(function (index) {
var obj = {};
obj[$(this).attr('href')] = $(this).children('img').attr('src');
optionz.push(obj);
});
$.each(optionz, function (index, value) {
console.log( index + ' : ' + value );
});
或者你只能改变这个:
var optionz = {};