我想默认显示一个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();
});
});
答案 0 :(得分:1)
在提供给setTimeout
的匿名函数中,this
不是您认为的那样。它实际上是全局window
对象。解决此问题的一种方法是存储对创建函数的上下文的引用。
$('#nav .children').mouseleave(function (e) {
var $children = $(this);
setTimeout(function(){
$children.hide();
$('#news').slideDown();
,2000);
e.stopPropagation();
});
MDN的"this"
文档是关于这个主题的一个很好的参考,我引用:
当前作用域中绑定到此对象的对象取决于当前函数的调用方式