zoukankan      html  css  js  c++  java
  • js在控件原有的事件方法中加入自己的方法

    有没有碰到过这样的情况,在一个别人的页面上,你想为某个按钮加入自己的控制逻辑,满足条件的情况下才执行原有的事件方法呢?

    这个时候在不能修改其原有方法的情况下,先获取控件的事件方法,并将其包装到自己的控制方法里面,然后再重置控件的事件方法为

    自己定义的这个方法,这样就可以解决问题了。

    PS:如果使用的是live或者delegate绑定的事件,就需要找到对应的绑定到的container对象,live默认是document,否则会失败。

    主要的控制方法:

    function RideControlEvent(eid,Fun)
    {
        var C=$("#"+eid).data("events").click;
    	var CL=C.length;
    	var CArr=new Array();
    	for(var i=0;i<CL;i++)
    	{
    	    CArr[i]=C[i].handler;
    	}
    	CArr[CL]=$("#"+eid)[0].onclick;
    	$("#"+eid).unbind("click");
    	$("#"+eid)[0].onclick=function(){}
    
    	var covclock=function(){
    		if(Fun())
    		{
    			CArr[CL]();
    			for(var i=0;i<CL;i++)
    			{
    				 CArr[i]();
    			}
    		}
    		else
    		{
    			return;
    		}
    	}
    	$("#"+eid)[0].onclick=covclock;
    }
    

    测试方法:

    function onload()
    {
    
    	$("#T").click(function(){alert("Bind Event 1.");});
    	$("#T").click(function(){alert("Bind Event 2.");});
    	
    	var myhandler=function (){
    		alert("Outer Control Envet. The Master.");
    		return true;
    	}
    	RideControlEvent("T",myhandler);			
    	
    }
    

     

    html部分: 

    <body onload="onload()">
    	<input name="T" id="T" type="button" value="TTT" style="" onclick="alert('Hard Code Event.')"/>
    </body>
    

      

    有没有其他的更好的方法或者写法能够实现同样的功能的,欢迎评论分享。

     

  • 相关阅读:
    JavaBean递归拷贝工具类Dozer
    SpringMVC自定义视图Excel视图和PDF视图
    CentOS7使用firewalld打开关闭防火墙与端口[转]
    区分JS中的undefined,null,"",0和false
    环比同比
    JavaScript 浮点数陷阱及解法
    一致性哈希算法(Consistent Hash)的黑科技
    Lua与C交互简明教程
    Twitter-Snowflake,64位自增ID算法详解
    Hystrix使用入门手册(中文)
  • 原文地址:https://www.cnblogs.com/wancy86/p/jsEventRide.html
Copyright © 2011-2022 走看看