我正在尝试实现与引导按钮下拉(http://twitter.github.io/bootstrap/components.html#buttonDropdowns)类似的东西,但需要一些轻量级的东西。基本功能或多或少都是这样的:
这背后的逻辑应该是什么?
演示: http://jsfiddle.net/fU2BZ/
下面的代码是否有意义?
$(document).click( function(){
$('.dropdownbox').hide(0);
$('.dropdown').removeClass('active');
});
$('.dropdown').click( function(event){
event.stopPropagation();
$('.dropdown').removeClass('active');
$('.dropdownbox').hide();
$(this).addClass('active').find('.dropdownbox').slideToggle(200);
});
答案 0 :(得分:4)
对您的代码进行了一些更改,添加了一些if else逻辑,似乎可行。
小提琴:http://jsfiddle.net/fU2BZ/1/
代码:
$('.dropdown').click( function(event){
event.stopPropagation();
if ($(this).hasClass("active")) {
$('.dropdown').removeClass('active');
$('.dropdownbox').hide();
} else {
$('.dropdownbox').hide();
$(this).addClass('active').find('.dropdownbox').slideToggle(200);
}
});
答案 1 :(得分:2)
你非常接近。如果它是可见的,我会存储一个标志(这样你就不会在相同的代码上加倍)
$('.dropdown').click( function(event){
event.stopPropagation();
var active = false;
if ( $(this).hasClass('active') )
active = true;
$('.dropdown').removeClass('active');
$('.dropdownbox').hide();
if ( ! active )
$(this).addClass('active').find('.dropdownbox').slideToggle(200);
});
jsFiddle:http://jsfiddle.net/fU2BZ/4/
答案 2 :(得分:2)
解决第三个问题的简单代码:
$('.dropdown').click(function (event) {
event.stopPropagation();
$('.dropdown').removeClass('active').not(this).find('.dropdownbox').hide();
$(this).toggleClass('active').find('.dropdownbox').slideToggle(200);
});
要解决您的上一期,请执行以下操作:
$('.dropdownbox').click(function (event) {
event.stopPropagation();
});