2

嗨,我在下拉导航菜单上使用 mouseleave(),这样当用户离开子菜单下拉菜单时,子菜单就会消失,但是它似乎忽略了它并且菜单仍然存在。有任何想法吗?这是网站和代码:

http://www.maiagifts.c​​o.uk/about-us/info_1.html

    $(document).ready(function() {

    $('#newcats li').addClass('parentitem');
    $('.newsubs li').removeClass('parentitem');
    $('.newsubs').hide();                      

    $('.parentitem').hover(              
    function(){
    $(this).children('.newsubs').show();
    $(this).siblings('.parentitem').children('.newsubs').hide();

 });


    //problem is here//
    $('.newsubs').mouseleave(
    function(){
    $(this).hide();
    });
    //problem is here//


    });
4

4 回答 4

4

尝试.on

$('.newsubs').on('mouseleave', function(){
    $(this).hide();
});

如果您使用的 jquery 版本低于 1.7.1,请使用.live()

于 2012-06-15T10:52:36.117 回答
0

你有没有尝试过:

   $('.newsubs').mouseleave(
    function(){
    $('.newsubs').hide();
    });

那会达到你想要的吗?

于 2012-06-15T10:53:30.257 回答
0

如果您查看您正在链接到的站点的开发控制台,您将看到一堆错误消息,其中一个(重复)是"Uncaught TypeError: Object #<Object> has no method 'mouseleave'"这样的,因此上述附加处理程序的代码永远不会执行。

.on也没有定义,我猜它们都是您 Uncaught TypeError: Cannot read property 'guid' of undefined在 jquery 第 91 行收到的第一条错误消息的结果。

换句话说,jQuery 脚本不会以它的完整长度执行,mouseleave并且其他方法(例如on从未定义过)。

于 2012-06-15T10:56:50.380 回答
0

我将 hover() 方法更改为 .mouseover() 并开始工作。我想知道是否因为我使用 hover() 的函数仅用于它的 mouseover 部分,jquery 已经决定它有一个空的 mouseleave 所以忽略了第二个。只是一个猜测。

于 2012-06-15T11:44:06.400 回答