Используйте :active вместо :hover, чтобы CSS применялся, когда кнопка мыши нажата.
Я не думаю, что предотвращение события размытия сделает именно то, что вы хотите, поскольку, если пользователь нажмет на ввод, затем на div, а затем в другом месте на странице, тогда div останется. Я могу придумать несколько разных вариантов, каждый со своими подводными камнями. Этот будет вести себя правильно, пока пользователь остается на странице, но оставит div, отображаемый, если пользователь переместится в адресную строку:
$("html").on("focus", "#name", function() {
$("#suggest").show();
}).mousedown(function() {
$("#suggest").hide();
}).on("mousedown", "#name, #suggest", function(e) {
e.stopPropagation();
});
jsFiddle: http://jsfiddle.net/nbYnt/2/
Если вам не нужна поддержка IE7, вы можете сделать это, используя только CSS (и он работает точно так, как ожидается в любом современном браузере, включая IE8):
#suggest {
display: none;
}
#name:focus + #suggest, #suggest:focus {
border: none;
display: block;
}
Обратите внимание, что вам нужно поместить tabindex в div, чтобы метод CSS работал:
<div id="suggest" tabindex="-1">
jsFiddle: http://jsfiddle.net/nbYnt/1/
Наконец, вы можете ошибиться в том, что div исчезнет, объединив JavaScript с CSS (это работает в IE7):
#suggest:hover {
display: block !important;
}
$("#name").focus(function() {
$("#suggest").show();
}).blur(function() {
$("#suggest").hide();
});
Проблема с этим методом заключается в том, что после нажатия на div простое перемещение мыши приведет к исчезновению div.
jsFiddle: http://jsfiddle.net/nbYnt/4/
person
Brilliand
schedule
13.05.2012