У меня есть поле ввода, где я пытаюсь сделать предложение автозаполнения. Код выглядит так
<input type="text" id="myinput">
<div id="myresults"></div>
На входном blur()событии я хочу скрыть результаты div:
$("#myinput").live('blur',function(){
$("#myresults").hide();
});
Когда я что-то записываю в свой ввод, я отправляю запрос на сервер и получаю ответ json, разбираю его в структуре ul-> li и помещаю этот ul в мой #myresultsdiv.
Когда я нажимаю на этот разобранный элемент li, я хочу установить значение от li до input и скрыть #myresultsdiv
$("#myresults ul li").live('click',function(){
$("#myinput").val($(this).html());
$("#myresults").hide();
});
Все идет хорошо, но когда я нажимаю на blur()событие li, которое запускается раньше, click()и значение input не получает html li.
Как я могу настроить click()событие раньше blur()?
blurон действительно запускается после того, как вы нажали на li, то вам, вероятно, не нужно выполнять $("#myresults").hide()обработчик щелчка. Кажется, что происходит то, что $(this).html()возвращается пустая строка. Не могли бы вы logили alert $(this).html()убедиться?
blur()и handlers click(), после blur()конца никаких действий нет