Je suis en train de faire une barre utilisateur de recherche comme celui de facebook (il consiste en une zone d'entrée et une baisse dynamique dans la liste déroulante des résultats)jQuery - Comment masquer la liste déroulante des résultats de recherche?
mais je vais avoir des problèmes à se cacher dans la liste déroulante des résultats liste quand je clique dans une autre zone.
le code html est quelque chose comme ceci:
<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>
et le code jquery près ceci:
$('#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());
});
mais il ne déclenche pas la display_selected_user_info();
Le principal problème est que le focus #search_container
est déclenché avant que le clic $('#search_result_list').children('li')
ne soit activé, ce qui fait disparaître l'élément li
b La fonction click li
est alors activée.
Note: Je l'ai placé un exemple était u peut tester here.
Je suis assez surpris que le menu affiche même - les résultats de la recherche est un frère de * *, pas un enfant à l'entrée. –
true il devrait être juste ('#search_result_list') au lieu de $ (this) .children ('li') ... déjà le corriger. mon vrai code est un peu plus complexe, mais l'idée est la même. – Seeker