我试图获取元素中每个列表项的宽度值,但它不断返回对象而不是宽度。这应该很简单,但由于某种原因,我一定会遗漏一些东西。
这是我的代码:
var listWidth = $('ul li').each(function(){
return $(this).width();
});
console.log(listWidth);
答案 0 :(得分:7)
使用map()
(docs)方法将值返回给jQuery对象,然后使用get()
(docs)方法将其转换为数组。
var listWidth = $('ul li').map(function(){
return $(this).width();
}).get();
或类似地,您可以使用返回数组的jQuery.map()
(docs)方法。
var listWidth = $.map($('ul li'),function(val){
return $(val).width();
});
答案 1 :(得分:3)
您也可以通过将值推送到数组来获取它们:
var listWidth = [];
$('ul li').each(function() {
listWidth.push($(this).width());
});
console.log(listWidth);
答案 2 :(得分:-1)
由于您将拥有多个列表项,因此您可以随时创建一个宽度数组:
var listWidth = [];
$('ul li').each(function(){
listWidth.push($(this).width());
});
console.log(listWidth);
或者,您可以创建宽度为
的对象var listWidth = {};
$('ul li').each(function(){
listWidth[$(this).attr('id')] = $(this).width();
});
console.log(listWidth);
此示例创建一个对象,其中包含标记的id及其宽度({ id1: width, id2: width, etc...}
,假设每个标记都有一个id)。
您发布的示例代码存在的问题是,在返回宽度时,它将其返回到each函数(可能只是丢弃它),但listWidth
是返回值each函数,而不是内部的匿名函数(因此,因为每个函数都返回一个jQuery对象,即分配给listWidth的函数)。