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();
});
}
});
管理显示或隐藏下拉菜单也使用淡化类。只剩下的问题是菜单会在每次点击输入字段时继续打开和关闭。看起来谷歌回答,但徒劳无功。可能忽略了一些遗漏的东西。或者代码不对。
帮助表示赞赏!
答案 0 :(得分:2)
在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");
});
});