Div元素上的jquery blur()事件有问题

Jeh*_*idi 10 html jquery onblur

我有问题隐藏某些基于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>
Run Code Online (Sandbox Code Playgroud)

Raf*_*ael 24

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

示例代码:

$(document).click(function(e){
    if($(e.target).is('#MainCanvas, #MainCanvas *'))return;
    $('#MainCanvas').hide();
});
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您不希望用户必须单击,则可以使用mouseout.如果他们不得不点击某个地方,你可能会在对话框上有一个关闭按钮并让他们点击它. (3认同)

Jay*_*hil 5

对于 div 模糊 focusout() 将起作用

 $('#divCustomerGroup').focusout(function () {
            alert('yo');
        });
Run Code Online (Sandbox Code Playgroud)