切换subnav和newsticker

时间:2013-04-15 07:30:33

标签: jquery menu

我想默认显示一个newsticker,但它的定位方式是当悬停菜单时,subnav应该替换newsticker。但我无法让它发挥作用:

JSFiddle:http://jsfiddle.net/rd9jS/

$(document).ready(function() {
    $('#nav > ul > li').mouseover(function () {
        $('#news').hide();
        $(this).parent().find("ul.children").not($('ul.children', this)).hide();
        $('ul.children', this).slideDown();
    });
    $('#nav .children').mouseleave(function (e) {
        setTimeout(function(){
            $(this).hide();
            $('#news').slideDown();
        },2000);
        e.stopPropagation();
    });
});

1 个答案:

答案 0 :(得分:1)

在提供给setTimeout的匿名函数中,this不是您认为的那样。它实际上是全局window对象。解决此问题的一种方法是存储对创建函数的上下文的引用。

$('#nav .children').mouseleave(function (e) {
    var $children = $(this);

    setTimeout(function(){
        $children.hide();
        $('#news').slideDown();
    ,2000);
    e.stopPropagation();
});

MDN的"this"文档是关于这个主题的一个很好的参考,我引用:

  

当前作用域中绑定到此对象的对象取决于当前函数的调用方式