1

blblblb_ で始まるすべての ID を取得し、作成した別の JS 関数を実行したいと考えています。これが私が持っているものです。最初のIDのみを取得しています:

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

私が間違っていることはありますか?

4

1 に答える 1

5

問題は、attrfooがコレクション内の最初の要素の ID を提供し、とにかく 1 回しか呼び出していないことです。

eachを使用して、jquery コレクションのすべての要素に対して関数を実行します。

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

あなたのコメントに基づいて、この種の ID を持つオブジェクトのコレクションが増えていて、id ごとに foo が 1 回だけ呼び出されるようにしたい場合は、次のようにします。

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 に答える