2014-09-30 3 views
0

У меня здесь уникальная ситуация, которую я пытаюсь выяснить. Вот что я делаю:Фокус из div, но не при нажатии на div - JQuery

 $(".add-user-group") 
     .focusout(function(e) { 
     $(this).parent().find(".search-overhang").hide(); 
     }) 
     .focus(function() { 
     $(this).parent().find(".search-overhang").show(); 
     }); 

Я слушаю, когда этот вход выбран, чтобы показать результаты контейнер, заполненный вызов сервера с помощью ajax Теперь в этом ajax вызова Я населяющие данные с помощью:

   dataSent.parent().find(".search-overhang").html(''); 
       for(var i = 0; i < data.data_retrieved.length; i++) 
       { 
        dataSent.parent().find(".search-overhang").append("<span class='overhang-data'><span>"+data.data_retrieved[i].display_name+"</span><br/><span class='bottom-inside-overhang-data'>"+data.data_retrieved[i].user_email+"</span></span>"); 

       } 
       $(".overhang-data").on('click',function(event){ 
        event.stopPropagation(); 
       }); 

Теперь вы заметите, у меня есть on click, который должен переопределить focusout на add-user-group. Но это не так. Прежде чем у него будет возможность сделать это, он останавливается, потому что я останавливаю действие события, используя focusout. То, что я пытаюсь понять, это то, как я могу переопределить это, даже когда мои данные динамически заполняются? Обратите внимание: add-user-group загружается на серверную сторону до загрузки страницы.

Предложения, мысли?

ответ

0

Посмотрев дальше я нашел быстрое решение:

var clicked = ''; 
$(document).on('mousedown',function(event){ 
    clicked = $(event.target).attr("class"); 
}); 
.. 
.focusout(function(event) { 
     if(clicked !== "overhang-data") 
     { 
      $(this).parent().find(".search-overhang").hide(); 
     } 
}).. 

Я просто слушать в глобальном масштабе, для чего щелкнул и хранения, что в переменную так, когда мне нужно проверить на focusout я могу проверить если это соответствующий класс.