我试图获取元素中每个列表项的宽度值,但返回的是对象而不是宽度。这应该非常简单,但由于某些原因我必须错过了什么。
以下是我的代码:
var listWidth = $('ul li').each(function(){
return $(this).width();
});
console.log(listWidth);
map()
(文档)方法将值返回到一个jQuery对象中,然后再使用get()
(文档)方法将其转换为数组。var listWidth = $('ul li').map(function(){
return $(this).width();
}).get();
jQuery.map()
(文档)方法。var listWidth = $.map($('ul li'),function(val){
return $(val).width();
});
您也可以通过将值推送到数组中来获取它们:
var listWidth = [];
$('ul li').each(function() {
listWidth.push($(this).width());
});
console.log(listWidth);
由于您将拥有多个列表项,因此可以在进行操作时创建一个宽度数组:
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函数的返回值,而不是其中的匿名函数(因此,由于each函数返回jQuery对象,因此将其分配给了listWidth)。