鼠标悬停小图标显示大图标


Posted in Javascript onJanuary 22, 2016

页面元素为div->table->tr->td,对于td中的图片,鼠标悬停上则显示大图片,鼠标离开则大图片消失:

首先需要知道jq创建dom元素语法;$(html标签),例如这里创建了一个img标签var img = $("<img class='changePhoto'></img>");

其次鼠标的悬停与离开这里使用的是hover方法,语法为$(selector).hover(inFunction,outFunction),
规定当鼠标指针悬停在被选元素上时要运行的两个函数。其中inFunction是必须的,outFunction是可选的。

该方法触发 mouseenter 和 mouseleave 事件。

注意:如果只规定了一个函数,则它将会在 mouseenter 和 mouseleave 事件上运行。

这里定义inFunction为确定大图片的位置,outFunction为remove创建的img节点。

1)只创建对象是不够的,还需要将创建的对象添加到文档节点中去,jq中使用的方法为

append() - 在被选元素的结尾插入内容
prepend() - 在被选元素的开头插入内容
after() - 在被选元素之后插入内容
before() - 在被选元素之前插入内容

应用在这里则为先给该img赋值,再append:

img.attr("src", $element.find(".prePhoto").attr("src"));
$element.append(img);

2)确定大图片位置的时候,需要三个参数,第一个是参照元素,这里选的是td的parents元素,tr:var $element = $(this).parents("tr")。

第二个是本次创建的目标元素,这里是img,第三个是目标元素可以出现的区域元素,一般是一个很大的元素,这里是table的父元素div,$(".fatherDiv")

因此,具体的方法为,

function getPosition($element, img, $(".fatherDiv"){
var top = $element.position().top + $element.height();//得到top:参照元素的top + 参照元素本身的height。
var maxBottom = $(".fatherDiv").height();//得到区域元素的height。
var minTop = 40;
if (top + img.height() > maxBottom) {
top = $element.position().top - img.height();
}
if (top < minTop) {//两个if判断,保证无论怎么划动鼠标的滑轮,目标元素始终出现在屏幕上。
top = minTop;
}
var $firstElement = $($(".fatherDivtbody tr")[0]);
img.css('top',top - $firstElement.position().top + 40);
}

3)remove创建的对象;$element.remove();

4) 目标元素的css需要满足一些条件:position:absolute

.changePhoto {
position: absolute;
width: 120px;
height: 160px;
left: 300px;
right: 10px;
float: right;
z-index: 9;
}
Javascript 相关文章推荐
jQuery 创建Dom元素
May 07 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
Jun 21 Javascript
详解Vue中添加过渡效果
Mar 20 Javascript
小发现之浅谈location.search与location.hash的问题
Jun 23 Javascript
浅谈通过JS拦截 pushState和replaceState事件
Jul 21 Javascript
js原生实现移动端手指滑动轮播图效果的示例
Jan 02 Javascript
vue和webpack项目构建过程常用的npm命令详解
Jun 15 Javascript
vue.js 中使用(...)运算符报错的解决方法
Aug 09 Javascript
解决VUE中document.body.scrollTop为0的问题
Sep 15 Javascript
详解ES6中的 Set Map 数据结构学习总结
Nov 06 Javascript
对vue中的事件穿透与禁止穿透实例详解
Oct 28 Javascript
JavaScript中layim之整合右键菜单的示例代码
Feb 06 Javascript
在JavaScript中call()与apply()区别
Jan 22 #Javascript
很全面的JavaScript常用功能汇总集合
Jan 22 #Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
Jan 22 #Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
Jan 22 #Javascript
JavaScript学习笔记整理之引用类型
Jan 22 #Javascript
jQuery弹层插件jquery.fancybox.js用法实例
Jan 22 #Javascript
基于JS实现新闻列表无缝向上滚动实例代码
Jan 22 #Javascript
You might like
新闻分类录入、显示系统
2006/10/09 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
jQuery动态添加
2016/04/07 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
javascript实现时钟动画
2020/12/03 Javascript
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
毕业生多媒体设计求职信
2013/10/12 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
小学见习报告
2014/10/31 职场文书
2014年调度员工作总结
2014/11/19 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
项目验收申请报告
2015/05/15 职场文书
南京南京观后感
2015/06/02 职场文书
初中团委工作总结
2015/08/13 职场文书
初中信息技术教学反思
2016/02/16 职场文书
JavaScript设计模式之原型模式详情
2022/06/21 Javascript