【发布时间】:2010-08-28 15:59:41
【问题描述】:
我正在尝试做一个类似 facebook 中的搜索用户栏 (它包含一个输入区域和一个动态下拉结果列表)
但是当我点击另一个区域时,我在隐藏下拉结果列表列表时遇到了问题。
html 代码是这样的:
<div id="search_container">
<input id="search_imput" type="text" autocomplete="off">
<ul id="search_result_list">
<li>result 1</li>
<li>result 2</li>
<li>result 3</li>
</ul>
</div>
以及这附近的jquery代码:
$('#search_imput').click(function(){
//update_search_result_list();
$('#search_result_list').show();
});
$('#search_container').focusout(function(){
$('#search_result_list').hide();
});
$('#search_result_list').children('li').click(function(){
//display_selected_user_info();
alert(($(this).text());
});
但它不会触发display_selected_user_info();
主要问题是#search_container在$('#search_result_list').children('li')点击激活之前触发了focusout,使得li在点击li功能激活之前就消失了。
注意:我放了一个例子,你可以测试here。
【问题讨论】:
-
我很惊讶菜单甚至显示 - 搜索结果是 sibling ,而不是输入的孩子。
-
true 它应该只是 ('#search_result_list') 而不是 $(this).children('li')... 已经修复它。我的真实代码稍微复杂一点,但思路是一样的。
标签: jquery