1

我想获取所有以 blblblb_ 开头的 ID 并运行我制作的单独 JS 函数。这是我所拥有的,它只获得第一个 ID:

$(window).scroll(function() {
  var test = $('div[id^="blblblb_"]').attr('id');
  foo(test);
});

任何想法我做错了什么?

4

1 回答 1

5

问题是attr为您提供集合中第一个元素的 id 并且您只调用foo一次。

使用each为 jquery 集合的所有元素执行一个函数:

$(window).scroll(function() {
    $('div[id^="blblblb_"]').each(function(){
        foo(this.id);
    });
});

根据您的评论,如果您有越来越多的具有这种 id 的对象集合并希望确保 foo 只为每个 id 调用一次,您可以这样做:

var done = {};
$(window).scroll(function() {
    $('div[id^="blblblb_"]').each(function(){
         if (!done[id]) {
             foo(this.id);
             done[id] = 1;
         }
    });
});

但我对用例持怀疑态度......

于 2012-11-28T18:12:17.607 回答