使用以下语法:
var position = array($('#ipadmenu > section').attr('data-order'));
我无法让我的代码工作。我之前从未使用过数组,所以我很失落如何使用它们。 (特别是在jquery中)。
如何创建所有section元素的数组,并将data-order的值与该列表相关联。例如:
first section - data-order:1
second section - data-order:2
等然后使用该信息。
谢谢!
答案 0 :(得分:2)
由于.attr
只获取一个属性 - the first one found by the jQuery selector - 您需要按元素构建数组元素。一种方法是.each
(您也可以使用.data
来提取数据属性):
var position = new Array;
$('#ipadmenu > section').each(function() {
position.push($(this).data('order'));
});
alert(position[0]); // alerts "1"
这将是一个索引数组,而不是关联数组。要构建其中一个(在JavaScript中,在技术上是一个对象,而不是任何类型的数组),只需更改.each
循环的内部部分:
var position = {};
$('#ipadmenu > section').each(function(i) {
position["section"+i] = $(this).data('order');
});
现在可以访问生成的对象position
,如:
alert(position['section1']); // alerts "1"
另一种方法涉及使用jQuery.map
,但由于这只适用于数组而不是jQuery对象,因此您需要先使用jQuery.makeArray
将您的选择转换为真正的数组:
var position = $.map($.makeArray($('#ipadmenu > section')), function() {
return $(this).data('order');
} ); // position is now an indexed array
这种方法在技术上比使用.each
更短,但我发现它不太清楚。
答案 1 :(得分:1)
Javascript:
var orders = [];
$('#ipadmenu > section').each(function() {
orders.push($(this).data('order'))
});
HTML:
<div id="ipadmenu">
<section data-order="1">1</section>
<section data-order="2">2</section>
</div>
答案 2 :(得分:0)
你会想做这样的事情:
// Get the elements and put them in an array
var position = $('#ipadmenu section').toArray();
console.log(position);
// Loop through the array
for (var i = 0; i < position.length; i++){
// Display the attribute value for each one
console.log("Section " + i + ": " + $(position[i]).attr('data-order'));
}
这里的工作示例:http://jsfiddle.net/U6n8E/3/