javaScript事件onmouseout 、 onmouseove
javaScript事件onmouseout 、 onmouseove
onmouseout: 鼠标从某元素移开
onmouseover: 鼠标被移到某元素之上
这两个事件是鼠标滑过元素是的效果,可以触发事件。实现标题栏的下拉及隐藏标题栏的下拉及隐藏常用。
最近做一个简单的网站,涉及到导航栏的下拉及隐藏,导航菜单是多级的,鼠标放到导航上下拉出一级菜单,鼠标放到下拉菜单上右联出二级菜单,移走后收起来。
于是想到javaScript的各种事件,发现onmouseout 、 onmouseove符合想法。
实现时蛋疼的情况出现了,下面上代码。
<div class="logodiv" id="dw1" onmouseout="divout()">
  <ul class="ul1">
    <c:forEach items="${arrs }" var="arrs1" varStatus="vs">
      <li onmouseover="liin1(this.id)" id="li${ vs.index+1}">
        <a href="">${arrs[vs.index] }</a>
      	<ul class="ul11" id="ul1${ vs.index+1}">
      	  <c:forEach items="${varLista[vs.index]}" var="vars" varStatus="livs" step="3">
      	    <li>
      		<a onclick="change1('${vars.DWNAME }','${vars.DEPTNAME }');">${vars.DEPTNAME }</a>
      		<a onclick="change1('${vars.DWNAME }','${varLista[vs.index][livs.index+1].DEPTNAME }');">${varLista[vs.index][livs.index+1].DEPTNAME }</a>
      		<a onclick="change1('${vars.DWNAME }','${varLista[vs.index][livs.index+2].DEPTNAME }');">${varLista[vs.index][livs.index+2].DEPTNAME }</a></li>
      	  </c:forEach>
        </ul>
      </li>
    </c:forEach>
  </ul>
</div>
上面代码中dw1是导航栏onmouseove事件过后显示出来的div,绑定onmouseout事件想实现的是鼠标离开后隐藏dw1。同理想的是鼠标滑过里面的li显示下级菜单,
这时候蛋疼的事情来了,鼠标一放到li上dw1的onmouseout事件触发了,dw1没有了,哎我去这啥情况啊!!!!!
实验了半天,觉得是鼠标放到li上时虽然是在dw1里面,但是实际上是聚焦到li上面了,就像是餐桌上的盘子,虽然但是。
又折腾了半天发现了一个好东西bind("mouseleave",function(){})、bind("mouseenter",function(){}),他们的作用是判断鼠标动作时移入、移出的是否是当前元素的内部元素,
注意啊是内部元素不是子元素,这可起飞了!!!!
bind("mouseleave",function(){})、bind("mouseenter",function(){})
于是一番操作下来有了下面的代码。ps:上边dw1上的onmouseout事件监听可以去掉了。
$(document).ready(function(){
  console.log("hhhhhhhhhhhhh");
  $("#dw1").bind("mouseleave",function(){
    //alert("saaaaaaaaa");
    console.log("out");
    $("#dw1").hide();
  });
  $("#dw1").bind("mouseenter",function(){
    //alert("saaaaaaaaa");
      console.log("over");
    //$("#dw1").hide();
    //$("#dw1").show();
  });
});
同时还发现了其他的方法,但是主要是针对IE浏览器,加监控后也不支持火狐,所以没有测试,这里记录一下。
contains
在onmouseover时先进行如下判断,结果为true时再执行方法体:
当触发onmouseover事件时,判断鼠标离开的元素是否是当前元素的内部元素,如果是,忽略此事件;
$("#popFormDiv").mouseover(function () {
  var s = event.fromElement || event.relatedTarget;
  if (!this.contains(s)) { $(this).show("slow"); }
});
在onmouseout时先进行如下判断,结果为true时再执行方法体:
当触发onmouseout事件时,判断鼠标进入的元素是否是当前元素的内部元素,如果是,忽略此事件;
$("#popFormDiv").mouseout(function () {
  var s = event.toElement || event.relatedTarget;
  if (!this.contains(s)) { $(this).hide("slow"); }
});
js添加如下的代码来为非IE浏览器增加contains支持:
if (typeof (HTMLElement) != "undefined") {
  HTMLElement.prototype.contains = function (obj) {
    while (obj != null && typeof (obj.tagName) != "undefined") {
        if (obj == this)
            return true;
        obj = obj.parentNode;
    }
  return false;
  };
}
												
											javaScript事件onmouseout 、 onmouseove的更多相关文章
- JavaScript 事件
		
事件 概念:事件是可以被 JavaScript 侦测到的行为. JavaScript 使我们有能力创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触 ...
 - javascript事件分类解析
		
最近在学习javascript,就顺便把常用事件给大家整理整理,也让自己加深印象.不足之处欢迎各位补充. 一般事件 onclick 鼠标点击时触发此事件 ondblclick 鼠标双击时触发此事件 ...
 - javascript事件与event对象的属性
		
javascript事件列表解说 事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown ...
 - jQuery事件和JavaScript事件
		
1.JavaScript事件: 属性 当以下情况发生时,出现此事件 FF N IE onabort 图像加载被中断 1 3 4 onblur 元素失去焦点 1 2 3 onchange 用户改变域的内 ...
 - javaScript事件(四)event的公共成员(属性和方法)
		
一.事件 二.事件流 以上内容见:javaScript事件(一)事件流 三.事件处理程序 四.IE事件处理程序 以上内容见javaScript事件(二)事件处理程序 五.事件对象 以上内容见javaS ...
 - JavaScript事件---事件入门
		
内容提纲: 1.事件介绍 2.内联模型 3.脚本模型 4.事件处理函数 JavaScript事件是由访问Web页面的用户引起的一系列操作,例如:用户点击.当用户执行某些操作的时候,再去执行一系列代码. ...
 - javascript事件大全4
		
javascript事件列表解说 事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown ...
 - 谈谈JavaScript事件
		
众所周知,web前端包含三个基本技术:html.css和javascript.三者融合,才让网页变得精彩纷呈!如今,web上的操作越来越趋于复杂,JavaScript事件在网页中也遍地开花,有时候也是 ...
 - 25、Javascript 事件
		
Javascript 事件 是指 Javascript 捕获到用户的操作,并做出正确的相应. Javascript 事件一般与DOM元素绑定. Javascript处理事件的基本机制 1.对DOM元素 ...
 - javascript事件详细说明
		
javascript事件列表解说javascript事件列表解说事件 浏览器支持 解说一般事件 onclick IE3.N2 鼠标点击时触发此事件ondblclick IE4.N4 鼠标双击时触发此事 ...
 
随机推荐
- django找不到template文件的解决办法
			
照着视频抄写第一个django展示html的页面如下图所示,然后运行之后提示 template不存在的问题,这个坑怎么填啊? 原来是因为主应用的settings文件下边少配置了一个东西,如下图所示,在 ...
 - 网线接口调试,Android ADB网络调试!
			
ADB网络调试,网线接口调试 没有USB接口,照样可以调试,可通过网线接口调试步骤! 一.第一步连接WIFI 查看wifi 的IP win+R 键 打开运行 ,输入cmd 二.输入ipc ...
 - shell—if + case条件语句
			
if 条件语句 1. 概述 在shell的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时候也会与 if 等条件语句相结合,来完成测试判断,以减少程序运行错误. 2. ...
 - window操作
			
1.进入目录 cd ... 2. 进入D盘 D: 3.读取文件内容 type file
 - Excel error - the macros in this project are disabled, please refer to the online help or documentation of the host application to determine how to enable macros.
			
alt+F11 进入vba界面,F5运行macro后报错. Sub 合并当前工作簿下的所有工作表() Application.ScreenUpdating = False For j = 1 To S ...
 - 关于邮箱怎么验证是不是真实的企业邮箱(java汉字和英文呼唤)
			
企业邮箱的域名一般都是zhangsan@公司域名,或者zhang_san@公司域名这种形式.这里我只列举zhangsan@公司域名这种形式. 公司要我做一个企业邮箱的模糊匹配和验证,刚接到以为很难.结 ...
 - [Github]获取github ID号
			
[Github]获取github ID号 https://api.github.com/users/ + 你的账户名称 实例:我github账号叫iBoundary. https://api.gith ...
 - 本地启动https服务器
			
如果是vue-cli3项目,直接在vue.config.js中设置如下即可: devServer: { https: true } 如果是express项目,则根据这篇文章来操作即可:https:// ...
 - 通过nft持有大户地址获取正常交易和内部交易
			
/*内部交易*/------------ CREATE TABLE `internal_txlist` ( `blockNumber` varchar(255) DEFAULT NULL, `tx_t ...
 - 关于el-dialog弹窗组件关闭报错事件
			
以下写法,向父组件抛出关闭事件, (正常点击弹窗footer的关闭时没有报错,但是点击空白处及右上角的×号,就会报以上错误) 原因, close事件为已经关闭了弹窗后的事件,官方还给出了 befor ...