让Lavalamp jQuery插件与下拉菜单一起使用? [英] Getting Lavalamp jQuery plugin to work with dropdown menu?

查看:108
本文介绍了让Lavalamp jQuery插件与下拉菜单一起使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

jQuery Lavalamp插件出现问题.它与单级菜单完美配合,但是在添加下拉菜单后,它会有些丢失.这就是我的意思: http://screenr.com/0fS .

当然,我希望实现的是当用户将鼠标悬停在子项目上时,lavalamp背景保持在Portfolio项目上.

我想这是稍微更改插件的问题,所以这是插件的完整代码.所需要的只是使lavalamp停在当前阶段的简单方法,当<li>的孩子们被悬停后,然后恢复正常工作.这是完整的插件代码供参考!

(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);`

谢谢.

解决方案

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

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

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.

解决方案

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

这篇关于让Lavalamp jQuery插件与下拉菜单一起使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆