视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
学习js鼠标按下触发移入事件的解决办法
2020-11-27 19:33:15 责编:小采
文档


鼠标事件是鼠标按钮被按下(左键或者右键)时触发。不能通过键盘触发。鼠标事件触发的顺序是怎样的?以下给出了详细的例子,

鼠标事件

DOM3级事件中定义了9个鼠标事件。

  • mousedown:鼠标按钮被按下(左键或者右键)时触发。不能通过键盘触发。

  • mouseup:鼠标按钮被释放弹起时触发。不能通过键盘触发。

  • click:单击鼠标左键或者按下回车键时触发。这点对确保易访问性很重要,意味着onclick事件处理程序既可以通过键盘也可以通过鼠标执行。

  • dblclick:双击鼠标左键时触发。

  • mouseover:鼠标移入目标元素上方。鼠标移到其后代元素上时会触发。

  • mouseout:鼠标移出目标元素上方。

  • mouseenter:鼠标移入元素范围内触发,该事件不冒泡,即鼠标移到其后代元素上时不会触发。

  • mouseleave:鼠标移出元素范围时触发,该事件不冒泡,即鼠标移到其后代元素时不会触发。

  • mousemove:鼠标在元素内部移到时不断触发。不能通过键盘触发。

  • note:

    在一个元素上相继触发mousedown和mouseup事件,才会触发click事件。两次click事件相继触发才会触发dblclick事件。

    如果取消 了mousedown或mouseup中的一个,click事件就不会被触发。直接或间接取消了click事件,dblclick事件就不会被触发了。

    1、事件触发的顺序

    举例:通过双击按钮,看一下上面触发的事件。

    <input id="btn" type="button" value="click"/><script>
     var btn = document.getElementById("btn");
     btn.addEventListener("mousedown",function(event){
     console.log("mousedown");
     },false);
     btn.addEventListener("mouseup",function(){
     console.log("mouseup");
     },false);
     btn.addEventListener("click", function () {
     console.log("click");
     },false);
     btn.addEventListener("dblclick", function () {
     console.log("dblclick");
     },false);</script>

    View Code

    2、mouseenter和mouseover的区别

    区别:

    mouseover事件会冒泡,这意味着,鼠标移到其后代元素上时会触发。

    mouseenter事件不冒泡,这意味着,鼠标移到其后代元素上时不会触发。

    举例:

    <!DOCTYPE html><html><head lang="en">
     <meta charset="UTF-8">
     <title></title>
     <style>
     #outer{ position: absolute; width: 200px; height: 200px; top:0; left: 0; bottom:0; right: 0; margin: auto; background-color: pink; }
     #inner{ position: absolute; width: 100px; height:100px; top:50%; left:50%; margin-left: -50px; margin-top: -50px;;
     background-color: orange; text-align: center; line-height: 100px; }
     #outer,#inner{ border-radius:50%; }
     </style>
     <script src="jquery-2.1.1.min.js"></script></head><body><body>
     <p id="outer">
     <p id="inner">
     </p>
     </p></body><script>
     var parentp = document.getElementById("outer");
     parentp.addEventListener("mouseover", function () {
     console.log("父p的mouseover事件被触发");
     },false); //parentp.addEventListener("mouseenter", function () {
     // console.log("父p的mouseenter事件被触发");
     //},false);
     //parentp.addEventListener("mouseout", function () {
     // console.log("父p的mouseout事件被触发");
     //},false);
     //parentp.addEventListener("mouseleave", function () {
     // console.log("父p的mouseleave事件被触发");
     //},false);</script></body></html>

    View Code

    note:

    mouseover对应mouseout,mouseenter对应mouseleave。效果可以取消上面代码的注释来看。

    jquery中hover API是把mouseenter 和mouseleave组合在一起来用的。

    3、鼠标左键和右键

    <script type="text/javascript">document.onmousedown=function (ev){
     var oEvent = ev||event; //IE浏览器直接使用event或者window.event得到事件本身。
     alert(oEvent.button);// IE下鼠标的 左键是1 , 右键是2 ff和chrome下 鼠标左键是0 右键是2};</script>

    下载本文
    显示全文
    专题