我正在尝试使用CSS和jquery创建一些下拉元素。这是我要实现的目标:


当鼠标悬停在句子中的特定单词上时,背景
单词的颜色被更改,并且出现下拉菜单
选项(使用相同的背景色)。
原始突出显示的单词的背景色应保持
将鼠标悬停在以下选项上时。
离开下拉菜单后,应返回隐藏状态,
原始单词应恢复为透明的背景色。


我目前的解决方案无法完美运行。悬停有时会导致下拉列表闪烁。我想知道是否有人可以提出一些更好的方法?

我认为我所做的确实有点骇人听闻。我不确定如何选择用户最初悬停的特定li元素,因此我可以更改该特定元素的bg颜色(无需为每个父li专门分配ID)。因此,我只是在离开下拉菜单时将所有li元素更改为透明,然后如果再次突出显示该单词,则必须将所有元素更改为蓝色bg颜色。另外,当将鼠标悬停在子项上时,每次都会有效地更改bg的颜色,这似乎并不是最好的方法。

这是JavaScript:

     $('#nav li').hover(
    function () {

       $(this).css('background-color', '#A7B7FF'); // to set parent item to  blue
        $('ul', this).css('background-color', '#A7B7FF'); // set sub items to  blue
        //show its submenu
        $('ul', this).css('z-index', '600'); // so it overlaps other drop down below
        $('ul', this).slideDown(100);

    },
    function () {
        //hide its submenu

        $('ul', this).slideUp(100,
            function() {

               $('li').css('background-color', 'transparent'); // callback so parent item returns to transparent


            }
        );
    }
);


有关完整示例,请参见:http://jsfiddle.net/A4r2m/1/

非常感谢

最佳答案

我将悬停调节了500毫秒,因此它不会闪烁。这也意味着在用户离开该区域后,菜单消失需要500毫秒,因此用户可以不小心离开该区域片刻然后返回,而不必重新进行动画处理。

编辑:我需要添加取消到受限制的hoverOut。

http://jsfiddle.net/A4r2m/4/

关于javascript - jQuery下拉选项-悬停和背景颜色问题-有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7781241/

10-15 15:45