mouseenter 使用 live 还是 delegate?

发布于 2024-10-06 04:38:58 字数 961 浏览 1 评论 0原文

我想重新提出一个别人问过的问题。使用 live 或 delegate 模拟 mouseenter 的最佳方法是什么?最初的问题在这里:

我应该如何模拟使用 jquery 的实时功能的 mouseenter 事件?

OP 的建议是:

// mouseenter emulation
jQuery('.selector').live('mouseover',function (e) {
    // live sees all mouseover events within the selector
    // only concerned about events where the selector is the target
    if (this != e.target) return; 
    // examine relatedTarget's parents to see if target is a parent. 
    // if target is a parent, we're "leaving" not entering
    var entering = true;
    jQuery(e.relatedTarget).parents().each(function () {
            if (this == e.target) {
                entering = false;
                return false; // found; stop searching
            }
    });
    if (!entering) return;
    /*
     the rest of my code 
     */
});

I want to re-open a question someone else asked. What's the best way to emulate mouseenter with live or delegate? The original question was here:

How should I emulate a mouseenter event using jquery's live functionality?

And the OP's proposal was:

// mouseenter emulation
jQuery('.selector').live('mouseover',function (e) {
    // live sees all mouseover events within the selector
    // only concerned about events where the selector is the target
    if (this != e.target) return; 
    // examine relatedTarget's parents to see if target is a parent. 
    // if target is a parent, we're "leaving" not entering
    var entering = true;
    jQuery(e.relatedTarget).parents().each(function () {
            if (this == e.target) {
                entering = false;
                return false; // found; stop searching
            }
    });
    if (!entering) return;
    /*
     the rest of my code 
     */
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧时光的容颜 2024-10-13 04:38:58
$('ul.cms_tabs_edit').delegate('li', 'mouseenter', function() {
    $(this).addClass('hover');
});

$('ul.cms_tabs_edit').delegate('li', 'mouseleave', function() {
    $(this).removeClass('hover');
});
$('ul.cms_tabs_edit').delegate('li', 'mouseenter', function() {
    $(this).addClass('hover');
});

$('ul.cms_tabs_edit').delegate('li', 'mouseleave', function() {
    $(this).removeClass('hover');
});
心房敞 2024-10-13 04:38:58

我最终做了:

$("#id").delegate(".selector", "mouseover", function(){
    if(!$(this).hasClass("bound")){                                                                                                          
        $(this).hover(function(){
            alert('entering');
        },
        function(){
            alert('leaving');
        }).mouseover().addClass("bound");
    }
});

有人有更好的解决方案吗?

I ended up doing:

$("#id").delegate(".selector", "mouseover", function(){
    if(!$(this).hasClass("bound")){                                                                                                          
        $(this).hover(function(){
            alert('entering');
        },
        function(){
            alert('leaving');
        }).mouseover().addClass("bound");
    }
});

Does anyone have a better solution?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文