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 鼠标双击时触发此事 ...
随机推荐
- MySQL 学习(四)并集查询
联合查询,它是用 union 关键字把多条 select 语句的查询结果合并为一个结果集.纵向合并的前提是被合并的结果集的字段数量.顺序和数据类型必须完全一致.字段名不一样的情况下,会将第一个结果集的 ...
- C++ 17 遍历文件夹图片文件进行循环操作
#include <filesystem>using namespace std;namespace fs = std::filesystem; string path = filepat ...
- 在windows上搭建spark遇到的问题
报错如下: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: --------- ...
- 登录他人mysql
//登录参数:mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)
- tif文件拼接+转换成netcdf格式
2022-11-16 11:33 手上有若干个SRTM1V3.0 的高程数据,为HGT格式,需要将其拼接并转换成netcdf格式,以让ncl能够进行读取 步骤: gdal_translate A.hg ...
- js原型,继承
javascript是为了成为轻量级的语言而开发的.开发者并没有选择像其他面向对象的语言一样,定义类(class),而是使用了protopype实现继承. 每一个函数在创建时,都会创建它的Protot ...
- phpstorm go py 30天无线试用
1.关闭软件(建议先导出设置配置,操作会重置配置) 2.删除文件(一般AppData会被隐藏,需要通过查看选项里面打开查看隐藏文件,不懂自行百度) 删除目录 C:\Users\用户名\AppData\ ...
- 使用nvm安装不同版本的NodeJS
下载及安装 下载地址:https://github.com/coreybutler/nvm-windows/releases 配置nodejs的镜像地址 nvm node_mirror https:/ ...
- Ingress限流
先说结论: ingress节点数量=n0 ingress限流配置 nginx.ingress.kubernetes.io/limit-rps: "n1" nginx.ingre ...
- go语言web框架-如何使用gin教程+react实现web项目
go-web+ react实践项目 前端使用react 搭建,从webpack搭建开始写,后端是学习go语言过程中的实践,由于之前没有实际的后端web经验,所以是自己一点一点摸索出来的.有错漏还望指正 ...