当前位置:  开发笔记 > 编程语言 > 正文

在jQuery中将所有href作为数组获取

如何解决《在jQuery中将所有href作为数组获取》经验,为你挑选了3个好方法。

我的代码看起来像这样:


现在我想得到以下内容:

所有链接都是一个数组

li的所有id作为数组

有谁可以帮助我吗?



1> airportyh..:
var ids = new Array();
var hrefs = new Array();
$('#ulList li').each(function(){
  ids.push($(this).attr('id'));
  hrefs.push($(this).find('a').attr('href'));
})



2> Grimace of D..:

我知道这是旧的,但是因为我喜欢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();


+1但是`allLinks`和`allIds`是类似jQuery数组的对象,它们不是真正的javascript数组.要返回真正的javascript数组,需要`allLinks = $ .makeArray(allLinks);`和`allIds = $ .makeArray(allIds);`

3> Venkat D...:

偶然发现了这个问题并提出了一个更可重复的答案:

$.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();
});

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有