找到具有特定字符串的所有id

时间:2012-04-17 01:06:40

标签: jquery

我正在尝试获取页面上所有链接的所有href标记,并将它们放入数组中。我有以下代码,但是当我检查控制台时,我收到错误Uncaught TypeError: Object has no method 'attr'我不确定从哪里开始。有什么想法吗?

代码

function videoLinks() {
    var videoLinks = $("a[id^=a_l_]").each(function() {
        var linkArray = jQuery.makeArray(videoLinks);
        console.log(linkArray.attr("href"));
    });
}

2 个答案:

答案 0 :(得分:4)

$.makeArray返回本机JavaScript数组,而不是jQuery对象。原生JavaScript数组没有像.attr()这样的jQuery方法。这开始有意义吗?

videoLinks传递给$.makeArray根本没有意义,因为您要么传递函数videoLinks,要么传递函数本地videoLinks 已经一个jQuery对象。所以,我认为这更像是你想要做的事情:

function videoLinks() {
    $("a[id^=a_l_]").each(function() {
        console.log(this.href);
    });
}

这将使用以href开头的<a>记录每个id元素的'a_l_'属性。也许你想建立一个href属性的数组,而不是记录它们。然后,您将使用.map().get()

function videoLinks() {
    var hrefs = $("a[id^=a_l_]").map(function() {
        return this.href;
    }).get(); // ← note the .get() call
}
  

我的最终目标是随机返回其中一个链接

然后你快到了。 Just get a random element from the hrefs array

function videoLinks() {
    var hrefs = $("a[id^=a_l_]").map(function() {
        return this.href;
    }).get(); // ← note the .get() call

    var randHref = hrefs[Math.floor(Math.random() * hrefs.length)];
    console.log(randHref);
}

答案 1 :(得分:0)

这对我有用..(来自上面的'Matt Ball'代码)

$("a[id^=a_l_]").each(function() {
        console.log(this.value);
    });