我的代码看起来像这样:
现在我想得到以下内容:
所有链接都是一个数组
li的所有id作为数组
有谁可以帮助我吗?
var ids = new Array(); var hrefs = new Array(); $('#ulList li').each(function(){ ids.push($(this).attr('id')); hrefs.push($(this).find('a').attr('href')); })
我知道这是旧的,但是因为我喜欢jQuery允许你写的oneliners,我想我会添加它:
var allLinks = $('#ulList a').map(function(i,el) { return $(el).attr('href'); }).get(); var allIds = $('#ulList li').map(function(i,el) { return $(el).attr('id'); }).get();
偶然发现了这个问题并提出了一个更可重复的答案:
$.fn.collect = function(fn) { var values = []; if (typeof fn == 'string') { var prop = fn; fn = function() { return this.attr(prop); }; } $(this).each(function() { var val = fn.call($(this)); values.push(val); }); return values; }; var ids = $('#ulList li').collect('id'); var links = $('#ulList a').collect('href');
您还可以将函数传递给collect,如下所示:
var widths = $('#ulList li').collect(function() { return this.width(); });