这是我遇到的问题。我有两个jQuery .live()事件,都用于点击事件。这些是在页面加载开始时初始化的;然后他们等待,直到与选择器匹配的项目出现并点击。现在,问题是当一个项目被添加到与选择器匹配的DOM时,实时事件是未绑定的(或者可能不是 - 它们根本不起作用。我已经验证它们不是偶数也被调用(在Firebug中设置一个断点内部,当我点击一个匹配选择器的链接时,它永远不会被触发 - 因此甚至不会调用该函数)。
此外,不仅是与这些特定选择器匹配的现场活动被搞砸了 - 当添加新项目时,它是每个未绑定的活动(或其他任何正在发生的事件)。
有没有人有过jQuery中的直播活动这样的经历? ......或者找到了解决方案?
答案 0 :(得分:1)
一种可能性是,匹配的元素包含在处理click事件并停止click事件传播的元素中。
例如:
<script type="text/javascript"> $(function() { $(".selector").live("click", function() { alert("clicked"); }); }); </script> <div onclick="event.stopPropagation();"> <div class="selector">Click me</div> </div>
在此示例中,单击“单击我”将不执行.live方法指定的事件。这是因为.live将事件绑定在DOM的更高级别(参见Josh Powell的评论here),因此,由于事件冒泡的性质,“event.stopPropagation();”在您的直播活动之前执行。由于它会停止传播,因此您的实时点击事件永远不会执行。
一个替代方法是使用jquery的livequery插件绑定每个匹配的元素。 (我试图提供一个链接,但作为一个新用户,stackoverflow阻止我发布多个链接)
答案 1 :(得分:0)
示例代码可能有助于诊断问题=)您确定有问题的元素与您提供的选择器相匹配吗?因为DOM的后期添加正是构建live
以解决的问题。