Jquery – 单击外部或单击另一个下拉列表时关闭下拉列表/删除活动类

我刚刚创建了自己的jquery插件,并且我有一个下拉列表,可以在单击时切换“活动”类

我只想在单击元素外部或单击其他下拉列表时删除’active’类,并且每个下拉列表都有不同的标记,但是使用相同的类,我通过调用以下方法通过jquery初始化它们:

$('.dropdown').dropdown(); 

这个东西有类似Bootstrap下拉的外观

这是我的代码:

  .dropdown { position:relative; display:inline-block; } .dropdown > button { padding:6px 12px; border-radius:4px; border:1px solid #bbb; background:linear-gradient(#fff 5% , #ddd 100%); } .dropdown.active > button, .dropdown > button:active { background:#ddd; box-shadow:inset 0px 3px 6px rgba(0,0,0, 0.125); } .dropdown > ul { margin:0; list-style:none; padding:0; } .dropdown > .menu { border:1px solid #ddd; border-radius:4px; position:fixed; top:65px; display:none; } .dropdown > .menu li , .dropdown > .menu .item { padding:6px 12px; min-width:100px; font-weight:bold; } .dropdown.active > .menu { -webkit-transform:none; display:inline-block; }   (function($) { $.fn.dropdown = function() { var dropdown = this; dropdown.find('button').click(function() { $(this).parent('.dropdown').toggleClass('active'); }); } })(jQuery);   $('.dropdown').dropdown();    

您可以先关闭所有下拉,然后点击一个,然后激活/打开当前点击下拉菜单:

 var p = $(this).parent(); $('.dropdown').not(p).removeClass('active'); 

在外面点击时关闭下拉菜单:

 $(window).click(function() { $('.dropdown').removeClass('active'); }); 

并通过以上代码防止包含下拉:

 $('.dropdown').click(function(event){ event.stopPropagation(); }); 

这是一个演示: https : //jsfiddle.net/huvzb305/3