1.需求简介 jQuery的hover事件只是针对单个HTML元素,例如:
复制代码 代码如下:
$('#login').hover(fun2, fun2);
当鼠标进入#login元素时调用fun1函数,离开时则调用fun2函数,这种API已能够满足绝大部分需求。
不过,有些时候我们希望当鼠标进入两个或多个元素时触发fun1,离开他们时触发fun2,而在这些元素间移动鼠标并不触发任何事件。例如两个元素紧挨着的HTML元素,如下图:
当鼠标进入二者的区域时触发fun1,离开时触发fun2。你也许会想到使用下面的方式
复制代码 代码如下:
$('#trigger, #drop'),hover(fun1, fun2);
这种方式并不能满足我们的需求,因为从#trigger进入#drop时会触发fun2和fun1。要解决这个问题,一种比较简单的方式是更改HTML结构,实现方式如下:
复制代码 代码如下:
<div id="container">
<div id="trigger"></div>
<div id="drop"></div>
</div>
$('#container').hover(fun1, fun2);
这样通过在父元素上绑定hover事件来实现此功能。
2.示例研究 下图为常见的下拉菜单简化图,HTML结构如下:
复制代码 代码如下:
ul id="#nav">
<li></li>
<li></li>
<li id="droplist">
<span>下拉菜单</span>
<ul>
<li>下拉项1</li>
<li>下拉项2</li>
<li>下拉项3</li>
<ul>
</li>
<li></li>
</ul>
实现的JavaScrip程序也是非常简单
复制代码 代码如下:
$('#droplist').hover(function(){
$(this).find('ul').show();
}, function(){
$(this).find('ul').hide();
});
这种实现方式逻辑清晰,但导致HTML嵌套层级过多,书写CSS时出现了许多不便。例如:
复制代码 代码如下:
#nav li { font-size:14px; }
我们希望这段CSS为第一层li元素设置14像素字体,但是其也作用于了第二层元素,所以不得不使用下面的语句改写过来
复制代码 代码如下:
#nav li li { font-size:12px; }
3.解决方案 更改HTML结构
复制代码 代码如下:
<ul id="#nav">
<li></li>
<li></li>
<li id="trigger">下拉菜单</li>
<li></li>
</ul>
<ul id="drop">
<li>下拉项1</li>
<li>下拉项2</li>
<li>下拉项3</li>
<ul>
依次引入JS文件
复制代码 代码如下:
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.mixhover.js"></script>
控制代码
复制代码 代码如下:
$.mixhover(
'#trigger',
'#drop',
function(trg, drop){
#(drop).show();
},
function(trg, drop){
#(drop).hide();
}
)
这样当鼠标进入#trigger时将#drop显示出来,鼠标从#trigger移如#drop时不会触发任何事件,实际上就是讲#trigger和#drop元素当做一个元素来处理。
jquery.mixhover.js程序如下
复制代码 代码如下:
/**
* Author: http://rainman.cnblogs.com/
* Date: 2014-06-06
* Depend: jQuery
*/
$.mixhover = function() {
// 整理参数 $.mixhover($e1, $e2, handleIn, handleOut)
var parms;
var length = arguments.length;
var handleIn = arguments[length - 2];
var handleOut = arguments[length - 1];
if ($.isFunction(handleIn) && $.isFunction(handleOut)) {
parms = Array.prototype.slice.call(arguments, 0, length - 2);
} else if ($.isFunction(handleOut)) {
parms = Array.prototype.slice.call(arguments, 0, length - 1);
handleIn = arguments[length - 1];
handleOut = null;
} else {
parms = arguments;
handleIn = null;
handleOut = null;
}
// 整理参数 使得elements依次对应
var elems = [];
for (var i = 0, len = parms.length; i < len; i++) {
elems[i] = [];
var p = parms[i];
if (p.constructor === String) {
p = $(p);
}
if (p.constructor === $ || p.constructor === Array) {
for (var j = 0, size = p.length; j < size; j++) {
elems[i].push(p[j]);
}
} else {
elems[i].push(p);
}
}
// 绑定Hover事件
for (var i = 0, len = elems[0].length; i < len; i++) {
var arr = [];
for (var j = 0, size = elems.length; j < size; j++) {
arr.push(elems[j][i]);
}
$._mixhover(arr, handleIn, handleOut);
}
};
$._mixhover = function(elems, handleIn, handleOut) {
var isIn = false, timer;
$(elems).hover(function() {
window.clearTimeout(timer);
if (isIn === false) {
handleIn && handleIn.apply(elems, elems);
isIn = true;
}
},
function() {
timer = window.setTimeout(function() {
handleOut && handleOut.apply(elems, elems);
isIn = false;
}, 10);
});
};
相关推荐:
AI智能时代的到来:如何利用人工智能推动生活与商业创新,ai相册下载
AI自动生成:开启智能时代的无限可能,ai熊熊图片
ChatGPT宕机恢复时间如何解决用户焦虑与技术背后的故事,ai人工智能写作火山
seo辅助词选什么,seo助手 ,各车企ai
ChatGPT故障你从未听过的真相,究竟是什么让它偶尔“失灵”?,ai 图片 矢量
SEO招标:如何通过专业SEO服务助力企业脱颖而出,牡丹江关键词排名怎么样
未来工作方式!AI在线工具让效率倍增,工作变轻松
SEO分类中内部优化的有:让你的网站脱颖而出!,by ai
用AI写文章,释放你的创作潜力!
seo需要学会什么编程,seo要会些什么 ,剪映怎样加ai
GoogleSEO打满分自然流量会高吗?揭开SEO优化的真相,猪插画ai
AI人工智能生成文章:开启写作新时代
SEO汇报:如何通过数据分析提升网站排名,助力企业业绩增长,免费推广网站大全百度经验
OpenAI银联支付-未来支付新体验,安全便捷全新升级,医学加ai
SEO模板:提升网站排名,助你快速抢占搜索引擎流量高地,选择seo职业缺点
SEO包月服务:助力企业提升网站排名与流量的长期利器,网站建设流程 报读文库
ChatGPT页面空白不乏登录:让你秒变职场高手与生活智囊,百度ai 腾讯ai
ChatGPT手机下载后打不开?可能是这些问题导致的,解决方法在这里!,孤城ai动画
2025年整站SEO排名优化策略:让你的网站脱颖而出,id排版ai
互联网时代的“搜索截流”新玩法:如何抓住流量红利,甘孜做优化网站软件
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
ChatGPT怎么突然不能打开了?你需要了解的原因与解决办法,ai写作有什么问题吗怎么解决
Chatget免费网站版无需登录,畅享无限对话体验!,工业 Ai 视觉检测
AI一键生成文章免费版:颠覆写作新体验
AI网页生成:轻松构建智能网站,提升品牌竞争力,杭州专业ai智能教育
专业SEO助力企业在激烈市场竞争中脱颖而出,嘉兴海外网站推广价格
seo,seoul city ,ai精洗
SEO观看:如何通过优化提升您的网站流量和品牌影响力,龙里网络营销推广
seo站内链接有什么作用,seo中网站内链的作用 ,781900ai
AI搜索相似文章怎么做?揭秘高效文章检索的核心技术!,程式ai软件
ChatGPT打不开实时问题解决方案:让你的AI助手始终在线,psd 转ai
ChatGPT+维护页面:您的智能助手之旅,安全、高效、无忧,奥特曼画图ai
SEO优化需要给网站做哪些优化工作?,ai捕捉火苗
SEO拓客,让您的业务飞速增长!,密云自适应网站建设
SEO架构:提升网站流量的核心策略,东营南江全平台营销推广
优排软件:高效管理新天地,轻松提升工作效率,长葛外贸网站建设
自动AI写文章:轻松创作时代的全新利器
好用的人工智能AI软件推荐,让你的生活更智能!
seo站长什么意思,站长工具 - seo综合查询 ,ai少女身材
打造内容创作新时代:有言AI生成助力创作者释放灵感
ChatGPT崩溃!用户反馈网页端无法访问,修复急需,ai院子
文章AI扩写:突破创作瓶颈,提升写作效率的秘密武器
乘风SEO:突破困境,领航网络营销新时代,武汉靠谱的关键词排名
AI提炼主要内容:如何让信息更精准、高效、易懂,女军人ai
ChatGPT怎么打开不了?全方位解决方案!,大庆ai
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
SEO通过-如何通过SEO优化让你的业务在搜索引擎中脱颖而出,保定网站建设推广专家
优化入口:提升网站流量与转化率的秘密武器,琼海关键词排名品牌
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
AI撰写工具的无限可能,让内容创作更高效、更精彩!