Можно ли написать обработчик onFocus/lostFocus для DIV с помощью JS или jQuery?
У меня есть div, и когда пользователь нажимает div, должна вызываться функция. И когда пользователь нажимает что-то еще (что угодно, кроме этого div), должна вызываться другая функция.
поэтому в основном мне нужно иметь вызовы функций onFocus() и lostFocus (), связанные с этим DIV. Доступен ли он в JavaScript или даже в jQuery?
спасибо.
4 ответов
здесь я создал рабочую демонстрацию того, что вы хотитеhttp://jsfiddle.net/kPbfL/1/
вам нужно добавить до div
:
разметка:
<div id="mydiv" tabindex="-1"></div>
в JavaScript
$("#mydiv").focusin(function() {
$("#mydiv").css("background","red");
});
$("#mydiv").focusout(function() {
$("#mydiv").css("background","white");
});
в CSS
#mydiv{
width : 50px;
height:50px;
border : 1px solid red;
}
фокус не работает на DIV
: http://api.jquery.com/focus/
также хорошо читать: jquery: фокус на div не работает
If you want to focus a div or anything normally can't be focused, set the tag's tabindex to -1 first.
eg: $("div#header").attr("tabindex",-1).focus();
Не уверен, подходит ли это решение для вашей веб-страницы, но вы можете использовать JQuery on (), чтобы прикрепить событие click к элементу body и делегировать его дочернему div. Затем в обработчике событий проверьте атрибут id и дескриптор как таковой; что-то вроде:
$(body).on("click", "div", function (evt) {
if ($(this).attr("id") == "innerDiv") {
handle inner div click here
} else {
hanlde out div click here
{
}
надеюсь, что это помогает...
конечно.
$("#your-div-id").focusin(function() {
// code here
});
$("#your-div-id").focusout(function() {
// code here
});