我不能让live()表现得像hover()

时间:2010-08-01 07:49:00

标签: javascript javascript-events jquery-1.4

我在jQuery 1.4中遇到了一个非常大的活动绑定问题。我想将悬停事件绑定到div.message元素并淡入控件。它们默认是隐藏的。使用.hover()时这很容易,但不绑定通过ajax添加的新项目。我试过.live()没有成功。每次光标移动到消息的各种内容时,它都会触发mouseovermouseout个事件。你可以想象这会使控件闪烁。当鼠标悬停在消息上时,我希望控件淡入。但是我需要在加载时将效果绑定到新消息。我被认为是在加载消息时绑定悬停事件。我更喜欢像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>

1 个答案:

答案 0 :(得分:1)

要解决此问题,您可以使用版本 1.4.2 中添加的delegate代替:

$("#container").delegate("div", "hover", function(){
    // your code....
});
  

.delegate()

     

描述:将处理程序附加到一个处理程序   所有元素的更多事件   匹配选择器,现在或在   未来,基于一组特定的   根元素。