让 Lavalamp jQuery 插件与下拉菜单一起使用?

发布于 2024-08-17 00:44:17 字数 1472 浏览 6 评论 0原文

我的 jQuery Lavalamp 插件有问题。它与单级菜单完美配合,但添加下拉菜单后,它会有点迷失。我的意思是:http://screenr.com/0fS

当然,我想要实现的是当用户将鼠标悬停在子项目上时,lavalamp 背景保留在组合项目上。

我想这只是稍微改变一下插件的问题,所以这里是插件的完整代码。所需要的只是一种简单的方法,让 lavalamp 在

  • 的子级悬停时停止在当前阶段,然后恢复正常工作。这是完整的插件代码供参考!
  • (function($) {
    $.fn.lavaLamp = function(o) {
    o = $.extend({ fx: "linear", speed: 500, click: function(){} }, o || {});
    
    return this.each(function() {
        var me = $(this), noop = function(){},
            $back = $('<li class="back"><div class="left"></div></li>').appendTo(me),
            $li = $("li", this), curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0];
    
        $li.not(".back").hover(function() {
            move(this);
        }, noop);
    
        $(this).hover(noop, function() {
            move(curr);
        });
    
        $li.click(function(e) {
            setCurr(this);
            return o.click.apply(this, [e, this]);
        });
    
        setCurr(curr);
    
        function setCurr(el) {
            $back.css({ "left": el.offsetLeft+"px", "width": el.offsetWidth+"px" });
            curr = el;
        };
    
        function move(el) {
            $back.each(function() {
                $(this).dequeue(); }
            ).animate({
                width: el.offsetWidth,
                left: el.offsetLeft
            }, o.speed, o.fx);
        };
    
    });
    };
    })(jQuery);`
    

    提前致谢。

    I have a problem with the jQuery Lavalamp plugin. It works perfectly with a single-level menu, but after adding a dropdown it gets a bit lost. Here's what I mean: http://screenr.com/0fS.

    Of course what I would like to achieve is for the lavalamp background to stay on the Portfolio item when the user hovers over the subitems.

    I guess it's a matter of changing the plugin slightly, so here's the full code of the plugin. What's needed is just a simple way to make the lavalamp stop at the current stage when <li>'s children are hovered and then go back to working normally after. Here's the full plugin code for reference!

    (function($) {
    $.fn.lavaLamp = function(o) {
    o = $.extend({ fx: "linear", speed: 500, click: function(){} }, o || {});
    
    return this.each(function() {
        var me = $(this), noop = function(){},
            $back = $('<li class="back"><div class="left"></div></li>').appendTo(me),
            $li = $("li", this), curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0];
    
        $li.not(".back").hover(function() {
            move(this);
        }, noop);
    
        $(this).hover(noop, function() {
            move(curr);
        });
    
        $li.click(function(e) {
            setCurr(this);
            return o.click.apply(this, [e, this]);
        });
    
        setCurr(curr);
    
        function setCurr(el) {
            $back.css({ "left": el.offsetLeft+"px", "width": el.offsetWidth+"px" });
            curr = el;
        };
    
        function move(el) {
            $back.each(function() {
                $(this).dequeue(); }
            ).animate({
                width: el.offsetWidth,
                left: el.offsetLeft
            }, o.speed, o.fx);
        };
    
    });
    };
    })(jQuery);`
    

    Thanks in advance.

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

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

    发布评论

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

    评论(2

    心欲静而疯不止 2024-08-24 00:44:17

    解决此问题的方法是将 lavalamp 中的悬停()更改为鼠标悬停,如下页所示。

    http://hekimian-williams.com/?p=146

    the fix for this is to change the hover() in the lavalamp to mouseover as show on the following page..

    http://hekimian-williams.com/?p=146

    回忆那么伤 2024-08-24 00:44:17

    我向顶级 li 添加了额外的类并更新了 js:

    $li = $("li.top-level-item", this),
    

    I added additional class to top level li and updated the js:

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