Проблема с вашим кодом:
Что вы пытаетесь сделать, это подключить обработчик события click
к .result
в обработчике события другого события (blur
).
Ваш код ничего не будет делать, кроме присоединения этого обработчика click
, который в основном ничего не делает.
Простой параметр:
Событие blur
будет инициировано первыми click
на .results
секунду, так что это непростая ситуация.
Самый простой способ сделать это:
$('input#auto_results').blur(function () {
$('#results_container').hide();
});
$('.result').click(function () {
$('#results_container').show();
});
jsFiddle Demo
Так что, просто скрыв контейнер, нажмите, чтобы показать его снова.В результате происходит небольшое мигание.
Параметр тайм-аута:
Другой вариант, о котором я могу подумать, - это установить небольшой тайм-аут при срабатывании blur
и событие щелчка.results
, отмени это.В этом примере я храню тайм-аут на body
с помощью функции .data()
, вы можете сохранить его на более логическом элементе, это просто демонстрация:
$('input#auto_results').blur(function () {
var cucc=setTimeout(function () {
$('#results_container').hide();
$('body').removeData('blurTimeout');
}, 100);
$('body').data('blurTimeout', cucc);
});
$('.result').click(function () {
var cucc=$('body').data('blurTimeout');
if (typeof cucc != 'undefined') {
clearTimeout(cucc);
}
});
jsFiddle Demo