js鼠标悬浮事件嵌套键盘事件问题,点击空格并没有响应,求大神来帮助!

JavaScript055

js鼠标悬浮事件嵌套键盘事件问题,点击空格并没有响应,求大神来帮助!,第1张

触发keydown事件需要控件获取到焦点,div控件无法像input控件那样获取到焦点,无法触发keydown事件,因此可以将keydown事件绑定在document上,然后用div的hover事件去判断鼠标是否正在div上。

<!DOCTYPE html>

<!--STATUS OK-->

<html>

<head>

    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />

    <meta http-equiv="content-type" content="text/htmlcharset=utf-8" />

    <meta property="wb:webmaster" content="3aababe5ed22e23c" />

    <meta name="referrer" content="always" />

    <title>s鼠标悬浮事件嵌套键盘事件问题,点击空格并没有响应,求大神来帮助!_百度知道</title>

    <style>

        .divTest { width: 200px height: 200px border: 1px solid #CCC }

    </style>

    <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>

    <script>

        var divFocus = false

        $(function () {

            $(".divTest").hover(function () {

                divFocus = true

                $(".divTest").text(2)

            }, function () {

                divFocus = false

                $(".divTest").text("")

            })

            $(document).keydown(function (event) {

                if (!divFocus) {

                    return

                }

                if (event.keyCode != 32) {

                    return

                }

                $(".divTest").text(101)

            })

        })

    </script>

</head>

<body>

    <div class="divTest"></div>

</body>

</html>

原则上双击和单击是不可以共存的,因为两者之间是存在逻辑冲突的,双击是由两次间隔很短的单击组成的,这样的话,如果单击和双击都设定了事件响应,当发生单击时,系统并不能立刻判断这是一个单击事件还是一个双击事件的第一次单击,这样系统就会进入等待状态,在经历一段短暂的时间后如果没有再次单击就判定为单击事件,否则就是双击。不管最终结果是什么,都必定会对程序的运行造成影响(单击事件会出现延迟,而且很容易造成误判)。所以建议你不要同时设定对象的单击和双击事件,用了单击就不要再用双击,反之亦然,否则冲突是在所难免的!