我正在创建一个类似Twitter的应用程序作为学习练习,并且在JS文件的开头有以下内容:

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


alert()是单击用户名时要触发的另一个函数的填充物。我的生成器正在为每个tweet创建以下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中。

我尝试了许多选择器,但无法触发警报。我的选择器不正确吗?或者是别的什么?

最佳答案

这是另一回事。您的选择器看起来正确。

您的代码很可能会生成没有绑定事件的新推文。您最好使用event delegation修复此问题:

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


在这里,.tweets元素应该是静态的,不能动态再生。

09-25 18:16
查看更多