2012-04-02 74 views
0

我正在使用jQuery的.toggle方法来创建菜单,该菜单在单击div时打开和关闭。这里是我的代码:“un”使用jQuery切换div

$(".header").toggle(function() { 
     $(this).find(".parent").fadeIn("fast"); 
     $(this).css("background-color","red");   
    }, function() { 
     $(this).find(".parent").fadeOut("fast"); 
     $(this).css("background-color","white");  
}); 

$(document).click(function() { 
     $('.parent').fadeOut("fast"); 
    $(".header").css("background-color","white"); 

}); 

$(".parent").click(function(event){ 
    event.stopPropagation(); 
}); 

http://jsfiddle.net/bmcmahen/X9S5C/8/

这工作顺利,直到我点击弹出菜单以外,关闭它,然后尝试再次单击菜单按钮。然后它需要双击。我需要做的是从$(document).click函数中解开对div的点击。有关我如何做这件事的任何想法?

+1

我一般从来不用切换,而不是我用一个“点击”听众,并依靠'问题'当前状态使用'.is(':hidden')' – anson 2012-04-02 23:54:02

+0

我正在考虑做类似的事情 - 我会给它一个镜头。 – bento 2012-04-03 00:02:55

回答

0
$(document).on('click', function() { 
    $(".header .parent").not(':hidden').closest('.header').click(); 
}); 

这将关闭所有弹出式菜单,而不仅仅是最新的一个打开。

让所有事情都保持原样。无需使用.data()或className。

Fiddle

+0

啊..这看起来更简单。谢谢。是的,它关闭了所有打开的div。要将其翻译为英文:单击文档时,它会查找所有class .parent中未隐藏的元素,找到下一个前面的.header类,然后单击它。这触发切换选项,重置它。那是对的吗? – bento 2012-04-03 00:47:34

+0

是的,正是如此! – 2012-04-03 01:41:01

0

您的代码存在的问题是,您需要单击两次以使toggle函数再次继续。所以当你点击文档时,你需要在标题上点击两次。

我试图解决你的问题。你可以添加Active类,无论你点击了什么,当你点击文档triggeractive header。请参阅demo here

只需替换此代码,然后它应该工作。

$(".header").toggle(function() { 
    $(this).addClass('Active').siblings().removeClass('Active'); 
    $(this).find(".parent").fadeIn("fast"); 
$(this).css("background-color","red");   
}, function() { 
    $(this).find(".parent").fadeOut("fast"); 
$(this).css("background-color","white");  
}); 

$(document).click(function() { 
     //$('.parent').fadeOut("fast"); 
    //$(".header").css("background-color","white"); 
    $(".header.Active").trigger('click'); 

}); 

$(".parent").click(function(event){ 
    event.stopPropagation(); 
}); 

$("#search").keyup(function(){ 
var query = $("#search").val(); 
    $("#results").append(query+"<br>"); 

}); 

+0

这是做到了。尼斯。它也从兄弟姐妹中删除了这个类,使它更加健壮。谢谢! – bento 2012-04-03 00:13:15

+0

但是,如果在单击文档时显示两个或多个弹出菜单会怎么样?当然,你希望他们都隐藏起来。看到我的答案。 – 2012-04-03 00:34:03