【发布时间】:2015-10-24 06:06:00
【问题描述】:
下拉菜单的 HTML 代码:
<ul>
<li class="dropDownLink">
Locality
<ul class="dropDown">
<li class="dropDown-row"><input tpye="text"></li>
</ul>
</li>
<li class="dropDownLink">
Locality
<ul class="dropDown">
<li class="dropDown-row"><input tpye="checkbox"> Option 1</li>
<li class="dropDown-row"><input tpye="checkbox"> Option 2</li>
<li class="dropDown-row"><input tpye="checkbox"> Option 3</li>
</ul>
</li>
</ul>
jquery 代码显示下拉菜单:
$('.dropDownLink').on('click', function () {
$('.dropDown').hide();
$(this).children($('.dropDown')).show();
});
jQuery 在点击外部下拉菜单时隐藏下拉菜单:
$(document).on('click', function (e) {
if(!$('.dropDownLink').is(e.target) && !$('.dropDown').is(e.target)) {
$('.dropDown').hide();
}
});
单击下拉列表以外的文档时,它工作正常,但单击下拉列表内的内容时,它会隐藏其父下拉列表。下拉菜单中也有一些表单内容,例如输入文本字段、复选框和链接。下拉菜单不应隐藏单击下拉菜单中的这些元素。
请帮我解决这个问题。提前致谢。
【问题讨论】:
-
嗨 Ashwani,我在主要答案中创建了一个解决方案。我使用了
$('*')选择器而不是$(document)。然后,我构建了一串与导航菜单相关的 DOM 元素,这样我就可以将其排除在绑定到on('click')函数之外。我希望这能让你到达那里。愿上帝保佑你。
标签: jquery css drop-down-menu click mouseclick-event