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 鼠标双击时触发此事 ...
随机推荐
- 你的ASP.NET Pages项目编译时为何总是很慢慢慢~?
摘要 很多同学在运行同一个Asp.net Pages项目解决方案时会发现,有时候很快,有时候超级慢,甚至时间超过10几分钟才可以完全编译完,随后才能调试! 其实这都是跟配置有关 有句话说的话,约定 ...
- smartgit 安装
下载 https://www.syntevo.com/smartgit/download/ 破解删掉
- k8s 基础
创建pod(kubectl create -f {podname} .yaml pod "{podname} " created -n {namespace}) cat name ...
- [Oracle19C 数据库管理] 管理回滚表空间(UNDO Tablespace)
当对数据进行修改时,Oracle数据库会将旧的数据存储到UNDO表空间(回滚表空间).回滚表空间让用户可以rollback到修改前的数据,提供了读一致性,并支持闪回查询过去的数据.Undo也用来在Tr ...
- composer disgnoize public key fail
https://composer.github.io/pubkeys.html 还有这事, 太不可思议了哦.--怎么进去的, 真的不知道哦.
- Jupyter 快捷键1
Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的单元框线是灰色. 命令模式 (按键 Esc ...
- liunx部署flask项目
如何在linux上部署flask项目 Python3.7 + virtualenv + uwsgi + git + mysql-5.6.45 + nginx 源码编译安装所需要的环境 yum inst ...
- 关于flex元素超出父元素的解决方法
左边是label, 右边是input. 设置父级为display:flex; input为flex:1; 然后label 为 white-space: nowrap; 这时input就有可能超出父级. ...
- 打卡node day04--express-get.post.路由
1.基本使用 npm i express 2.请求 get: post: express 不能直接解析请求体,所以需要第三方插件 ---->body-parser 使用 npm install ...
- Jemter 压测基础(一)
Jemter 压测基础(一) 1.压力测试的基本概念: 1.吞吐率(Requestspersecond) 服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请 ...