Можно ли написать обработчик 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
});