专注于div而不是如果div被按下 - Jquery

时间:2014-09-30 01:19:15

标签: javascript jquery ajax

我有一个独特的情况,我想弄清楚。这就是我在做的事情:

     $( ".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在页面加载之前加载服务器端。

建议,想法?

1 个答案:

答案 0 :(得分: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时,我可以验证它是否是相应的类。