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>
    

      

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

     

  • 相关阅读:
    hdu 3786 寻找直系亲属
    about the plan
    2013 ACM/ICPC Asia Regional Online —— Warmup1 1005 Balls Rearrangement
    poj 1833 给poj跪了 字典排序
    20170630总结
    20170701总结
    20170628总结
    20170629总结
    20170626总结
    20170627总结
  • 原文地址:https://www.cnblogs.com/wancy86/p/jsEventRide.html
Copyright © 2011-2022 走看看