下拉菜单关闭时,用户点击自选显示或还隐藏下拉菜单淡入类体或外下拉菜单
问题描述:
JSFiddle Demo下拉菜单关闭时,用户点击自选显示或还隐藏下拉菜单淡入类体或外下拉菜单
的Html
<input type="text" class="js-search" name="" value="">
<div class="category-list">
<i class="icon-close"></i>
<div class="select-column">
<ul>
<li>
<a class="category-select" href="#">Test1</a>
</li>
<li>
<a class="category-select" href="#">Test2</a>
</li>
<li>
<a class="category-select" href="#">Test3</a>
</li>
</ul>
</div>
</div>
JQuery的
var search = $('.js-search');
var menu = $('.category-list');
var close = $('.icon-close');
var category = $('.category-select');
search.on('click', function(e){
e.preventDefault();
menu.fadeIn("normal", function() {
$(this).show();
$(document).click(function(e){
menu.fadeOut("normal", function() {
$(this).hide();
});
});
close.on('click', function(){
menu.fadeOut("normal", function() {
$(this).hide();
});
});
category.on('click', function(){
var el = $(this);
search.val("");
menu.fadeOut("normal", function(){
$(this).hide();
});
search.val(el.text());
});
});
});
$('body').click(function(e) {
if ($(e.target).closest(menu).length === 0) {
menu.fadeOut("normal", function() {
$(this).hide();
});
}
});
上的任何地方。剩下的问题是菜单每次点击输入字段时都会继续打开和关闭。看着谷歌回答,但徒劳无功。可能忽略了一些缺失的东西。或者代码不正确。
帮助感谢!
答
没有“click
处理程序在click
处理程序”的简化代码。整个想法是打开<input>
点击下拉菜单,把选择的<a>
文本<input>
并隐藏在单击下拉除了<input>
任何地方:
$(document).ready(function()
{
var search = $('.js-search');
var menu = $('.category-list');
var category = $('.category-select');
search.on('click', function()
{
menu.fadeIn("normal");
return false;
});
category.on('click', function()
{
search.val($(this).text());
});
$(document).on('click', function()
{
menu.fadeOut("normal");
});
});
添加'document'单击事件处理程序(和两个每个'.js-search'点击的'.icon-close'和'.category-select'都有更多的处理器。此外,使用'$(this).show();''.fadeIn()'完整性是什么意思? – Regent 2014-10-22 11:07:42
您想要显示下拉菜单的输入字段? – Amy 2014-10-22 11:08:13
@Regent:yah,未使用的代码有什么用,所以可以用show/hide来完成 – 2014-10-22 11:17:35