1

私は学習演習として Twitter のようなアプリを作成しており、JS ファイルの先頭に次のものがあります。

$(function(){
   setInterval(update, 3000);
   $('.tweet li a.username').on('click', function() {
      alert('hey!');
    });
    $('.showMore').on('click', function() {
      moreIndex += 5;
      update();
    })
  });

alert() は、ユーザー名がクリックされたときに起動したい別の関数のフィラーです。私のジェネレーターは、ツイートごとに次の HTML を作成しています。

<ul class="tweets">
    <ul class="tweet">
        <li><a class="username" href="#">@jason:</a> tweet text </li><li class="date"> Date </li>
    </ul>
</ul>

これは、クラス tweetDiv の div に含まれています。

多くのセレクターを試しましたが、アラートを発生させることができません。私のセレクターは間違っていますか?それとも別のものですか?

4

2 に答える 2

3

それは別のものです。あなたのセレクターは正しいようです。

ほとんどの場合、あなたのコードは、バインドされたイベントを持たない新しいツイートを生成します。それを修正するには、イベント委任を使用することをお勧めします。

$('.tweets').on('click', '.tweet li a.username', function() {
    alert('hey!');
});

ここで.tweets要素は静的であり、動的に再生成されません。

于 2013-10-11T14:11:02.387 に答える