我在jQuery 1.4中遇到了一个非常大的活动绑定问题。我想将悬停事件绑定到div.message元素并淡入控件。它们默认是隐藏的。使用.hover()
时这很容易,但不绑定通过ajax添加的新项目。我试过.live()
没有成功。每次光标移动到消息的各种内容时,它都会触发mouseover
和mouseout
个事件。你可以想象这会使控件闪烁。当鼠标悬停在消息上时,我希望控件淡入。但是我需要在加载时将效果绑定到新消息。我被认为是在加载消息时绑定悬停事件。我更喜欢像live这样的解决方案,但其工作原理与悬停完全相同。
<div id="messages">
<div class="message">
<div class="controls">
<a href="dosomthing">
do somthing
</a>
<a href="dosomthing">
do somthing
</a>
</div>
<p>blah blah blah</p>
</div>
<div class="message">
<div class="controls">
</div>
<p>blah blah blah</p>
</div>
<div class="message">
<div class="controls">
<a href="dosomthing">
do somthing
</a>
<a href="dosomthing">
do somthing
</a>
</div>
<p>blah blah blah</p>
</div>
</div>
答案 0 :(得分:1)
要解决此问题,您可以使用版本 1.4.2 中添加的delegate
代替:
$("#container").delegate("div", "hover", function(){
// your code....
});
.delegate()
描述:将处理程序附加到一个处理程序 所有元素的更多事件 匹配选择器,现在或在 未来,基于一组特定的 根元素。