【问题标题】:I can't get live() to act like hover()我不能让 live() 表现得像 hover()
【发布时间】:2011-03-23 19:28:48
【问题描述】:

我在 jQuery 1.4 中的实时绑定遇到了一个非常大的问题。我想将悬停事件绑定到 div.message 元素并淡入控件。默认情况下它们是隐藏的。这在使用.hover() 时很容易,但不会绑定通过 ajax 添加的新项目。我试过.live() 没有成功。每次光标移动到消息的各种内容上时,它都会触发mouseovermouseout 事件。正如您可以想象的那样,这会使控件闪烁。当鼠标悬停在消息上时,我希望控件淡入。但是我需要在加载新消息时将效果绑定到新消息。我建议在加载消息时绑定悬停事件。我更喜欢像 live 这样的解决方案,但工作方式与 hover 完全一样。

<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>

【问题讨论】:

    标签: javascript javascript-events jquery-1.4


    【解决方案1】:

    要解决此问题,您可以使用 1.4.2 版本中添加的delegate,如下所示:

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

    .delegate()

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

    【讨论】:

    • 非常非常非常感谢!我现在可以去睡觉了。干杯,如果可能的话,我会请你喝啤酒。
    猜你喜欢
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2018-12-25
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多