zoukankan      html  css  js  c++  java
  • 鼠标移入移除事件的一点小思考

      最近项目中有个小需求,需要对一个div做上传图片的效果,当鼠标移入div时提示图片显示,当鼠标移除div时提示图片隐藏,我的实现方案如下:

    <form>
    	<div class="file-list">
    		<div class="list-img">
    			<div class="cover"></div>
    			<img src="img/plus.png" />
    			<input type="file" class="file" id="file1">		
    			<p>上传标题图片</p>
    		</div>
    	</div>
    </form>
    
    //鼠标进入事件
    var enterFun=function(){
    	$(this).find('.cover').css('display', 'block');
    	$(this).find('img').css('display', 'block');
    	$(this).find('p').css('display', 'block');
    	$(this).find('input').css('display', 'block');
    }
    
    //鼠标移除事件
    var outFun=function(){
    	$(this).find('.cover').css('display', 'none');
    	$(this).find('img').css('display', 'none');
    	$(this).find('p').css('display', 'none');
    	$(this).find('input').css('display', 'none');
    }
    
    //鼠标移入事件
    $(".file-list").find(".list-img").each(function(i,el){
    	$(el).on("mouseenter",enterFun);
    })
    					
    //鼠标移出事件
    $(".file-list").find(".list-img").each(function(i,el){
    	$(el).on("mouseleave",outFun);
    })
    

     html中的<form>标签和<input type="file"/>是为了后面的上传图片,<div class="cover">标签是用来做背景蒙版的,<img src="img/plus.png" />是添加图片的标记图片。代码这样写,毫无疑问是可以完成任务的,但关键是重写了很多相同的代码,我希望能做一下简单的提炼,减少代码的重复,目前把js代码修改如下:

    var mouseFun=function(event){
    	var display="none";
    	if (event.data.type=="enter") {
    		display="block";
    	} 
    	$(this).find('.cover').css('display', display);
    	$(this).find('img').css('display', display);
    	$(this).find('p').css('display', display);
    	$(this).find('input').css('display', display);
    }
    
    //绑定事件
    $(".file-list").find(".list-img").each(function(i,el){
      $(el).on("mouseenter",{type:"enter"},mouseFun);
      $(el).on("mouseleave",{type:"leave"},mouseFun); })

     在此过程中有几个知识点希望记录一下:

    1.mouseover和mouseenter事件的区别:
      不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。对应mouseout
      只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。对应mouseleave   

    2.jquery中on函数绑定带参函数,参数作为对象绑定在event.data上,想获取参数,必须通过event.data来获取。

  • 相关阅读:
    Maven 配置篇之 pom.xml
    Maven 配置篇之 pom.xml
    Building Seam 2.0 Application with NetBeans 6.1(Maven2)
    TestNG 使 Java 单元测试轻而易举
    文本加密和解密
    DLL/OCX中的MFC对话框不能处理Tab和回车键的问题 .
    如何在编辑框中使用IAutoComplete接口
    演练:创建和使用静态库 (C++)
    MFC Activex OCX Javascript 互相访问问题,线程回调javascript
    VC++学习方法及书籍推荐 .
  • 原文地址:https://www.cnblogs.com/iagw/p/6566421.html
Copyright © 2011-2022 走看看