10

我在隐藏某些基于 div 的弹出窗口时遇到问题。当我点击他们不隐藏的那些div时。这是我在做什么的示例代码..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>

    <script type="text/javascript" src="../JS/jquery-1.3.2.js"></script>
    <script type="text/javascript">
        $(document).ready(function()
        {
            $("#MainCanvas div").blur(function()
            {
                alert("blured");
            });
        });
    </script>

</head>
<body>
    <div id="MainCanvas" style="width: 400px; height: 350px; border: solid 1px black;">
       <div class="ui-widget-content" style=" vertical-align:middle; height:60px; border: solid 2px black; width:300px;">
            Drag me around
        </div>
    </div>

</body>
</html>
4

8 回答 8

25

如果我没记错的话,只有 A、AREA、BUTTON、INPUT、LABEL、SELECT、TEXTAREA 创建焦点/模糊事件。如果您想通过在弹出窗口外部单击来隐藏弹出窗口,则必须例如侦听文档上的单击事件并检查事件是在弹出窗口内部还是外部发生。

示例代码:

$(document).click(function(e){
    if($(e.target).is('#MainCanvas, #MainCanvas *'))return;
    $('#MainCanvas').hide();
});
于 2009-12-31T12:58:28.350 回答
6

for div blur focusout() 将起作用

 $('#divCustomerGroup').focusout(function () {
            alert('yo');
        });
于 2015-10-06T13:22:13.827 回答
4

您可以在标签上添加tabindex属性:div

<div class="my_div" tabindex="3"></div>

之后模糊事件将起作用:

$('.my_div').blur(function(){ 
   //code ... 
});
于 2013-03-06T18:21:45.893 回答
1

我已经使用以下代码完成了

<script>
    $(document).click(function (e) {
        if ($(e.target).is('._dpcontrol, ._dpcontrol *'))
            return;
        $('._dpcontrol').each(
                function (index, value) {
                    var retrivedtextbox = $(this).find('._dpitem')[0];
                    $(retrivedtextbox).fadeOut();
                });     
    });
</script>
于 2012-06-25T12:05:03.603 回答
0

我从多种解决方案中借用了一个技巧来使事情变得简单。基本上,当我关注某些东西时,我希望它出现,但如果我点击它,我希望它再次隐藏。因此,如果我单击出现的 div 内的某些内容,我的单击然后会查看它是否找到名为“DivHoldingcustomController”的父级。如果是这样,什么也不做。如果没有(因为我点击了其他地方,所以我点击的任何东西都没有这个父级),然后隐藏自定义控制器。

    $(document).on("click", function (event) {
        var groupSelectorArea = $(event.target).closest(".DivHoldingCustomController").length == 1;
        if (!groupSelectorArea)
            $(".SomethingIWantToHide").hide();
    });
于 2014-04-30T16:42:33.090 回答
0

最好的办法是处理 mousedown 事件并检查调用该事件的元素。

于 2009-12-31T13:01:25.040 回答
0

您可以使用mouseleave方法和解决方案

 <script type="text/javascript">
    $(document).ready(function()
    {
        $("#MainCanvas div").mouseleave(function()
        {
            alert("mouseleave");
        });
    });
</script>
于 2014-10-15T21:00:15.250 回答
0

jQuery 具有 绑定到模糊.focusin().focusout()焦点事件的方法,这些事件不会触发原生 javascript 模糊事件。 jQuery 聚焦

于 2014-11-11T10:16:12.263 回答