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

时间:2012-11-28 18:11:23

标签: javascript jquery

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

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

任何想法我做错了什么?

1 个答案:

答案 0 :(得分: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;
         }
    });
});

但我对用例感到怀疑......