Javascript 使用jQuery属性选择器选择所有ID并运行函数

Javascript 使用jQuery属性选择器选择所有ID并运行函数,javascript,jquery,Javascript,Jquery,我想获得所有以blb_uu开头的ID,并运行我创建的单独JS函数。这是我所拥有的,它只获得第一个ID: $(window).scroll(function() { var test = $('div[id^="blblblb_"]').attr('id'); foo(test); }); 你知道我做错了什么吗?问题是,给你集合中第一个元素的id,你只调用了一次foo 用于为jquery集合的所有元素执行函数: $(window).scroll(function() { $('d

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

$(window).scroll(function() {
  var test = $('div[id^="blblblb_"]').attr('id');
  foo(test);
});
你知道我做错了什么吗?

问题是,给你集合中第一个元素的id,你只调用了一次
foo

用于为jquery集合的所有元素执行函数:

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

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

var done = {};
$(window).scroll(function() {
    $('div[id^="blblblb_"]').each(function(){
         if (!done[id]) {
             foo(this.id);
             done[id] = 1;
         }
    });
});
但我对用例表示怀疑

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

用于为jquery集合的所有元素执行函数:

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

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

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

但我对用例表示怀疑

这是可行的,但是我怎么能省略我已经有的id呢?我猜每次我开始滚动它都会重新开始?我不确定我是否理解你已经拥有的id的意思。你是说有这种id变化的对象列表,你只想对每个id执行一次foo吗?我编辑过,但这真的是你想要的吗?我无法想象你会需要这个。嘿,谢谢!我可以使用数组来查看是否存在相同的id。顺便提一下我用这个来追踪,但我怎么能省略我已经有的id呢?我猜每次我开始滚动它都会重新开始?我不确定我是否理解你已经拥有的id的意思。你是说有这种id变化的对象列表,你只想对每个id执行一次foo吗?我编辑过,但这真的是你想要的吗?我无法想象你会需要这个。嘿,谢谢!我可以使用数组来查看是否存在相同的id。顺便提一下我用这个来追踪