javascipt中事件绑定方法介绍

Javascript的事件绑定主要有四种方法(一下在IE中运行正常,但不保证其他浏览器):

1、在DOM中,直接用onXXX="fun();"进行绑定

2、在Javascript代码中用 DOM对象.onXXX=fun 进行绑定

3、用 DOM对象.attachEvent("onXXX",fun) 进行绑定

4、用<script for="domId" event="onXXX">fun();</script> 进行绑定

 代码如下 复制代码

<html>
<head>
<script type="text/javascript">
    function test(){

        window.alert("你投了一票");
        //解除绑定 IE 独有
        //document.getElementById("tp").detachEvent("onclick",test);
        //W3C 标准
        document.getElementById("tp").removeEventListener("click",test);
    }
   
</script>
</head>
<body>
<input type="button" id="tp" value="投票" />
</body>
<script>
    //绑定事件监听 IE独有
    //document.getElementById("tp").attachEvent("onclick",test);
    ////W3C 标准
    document.getElementById("tp").addEventListener("click",test);
</script>
</html>

 代码如下 复制代码

function addEvent( obj, type, fn ) {
        if ( obj.attachEvent ) {
            obj['e'+type+fn] = fn;
            obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
            obj.attachEvent( 'on'+type, obj[type+fn] );
        } else
            obj.addEventListener( type, fn, false );
    }
    function removeEvent( obj, type, fn ) {
        if ( obj.detachEvent ) {
            obj.detachEvent( 'on'+type, obj[type+fn] );
            obj[type+fn] = null;
        } else
            obj.removeEventListener( type, fn, false );
    }

事件绑定BUG大家可参考参考。

 代码如下 复制代码

<a id="link_foo">Foo</a><a id="link_foo">Foo</a>
<script type="text/javascript">
function bindFooClick(){
  $("#link_foo").click(function(){
    console.log "asd"
  });
}
bindFooClick();
bindFooClick();
bindFooClick();
bindFooClick();
</script>

然后去点击 Foo 这个连接,将会出现4个日志输出。

如果不小心这个事件绑定被搞得成倍增长了,那就等着暴掉吧。

所以需要在 bindFooClick 绑定事件前去掉之前的绑定

 代码如下 复制代码

function bindFooClick(){
  $("#link_foo").unbind("click");
  $("#link_foo").bind("click", function(){
    console.log "asd"
  });
}

时间: 2024-12-28 05:39:37

javascipt中事件绑定方法介绍的相关文章

关于JavaScript中事件绑定的方法总结_javascript技巧

最近收集了一些关于JavaScript绑定事件的方法,汇总了一下,不全面,但是,希望便于以后自己查看. JavaScript中绑定事件的方法主要有三种: 1 在DOM元素中直接绑定 2 JavaScript代码中直接绑定 3 绑定事件监听函数 一.在DOM元素中直接绑定 也就是直接在html标签中通过 onXXX="" 来绑定.举个例子: <input type="button" value="点我呦" onclick="aler

jQuery事件绑定方法学习总结(推荐)_jquery

对于jQuery中的事件绑定方法,主要有on().bind().delegate().live()等这几个方法.之前都是之前拿过来用,也知道有这么几个方法,但是不清楚这几个事件绑定方法之间的区别.平时用的最多的是on方法,今天打算整理一下. bind方法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatibl

js中事件绑定,$(&amp;amp;quot;body&amp;amp;quot;).on(&amp;amp;quot;click&amp;amp;quot;)与$(&amp;amp;quot;&amp;amp;quot;).click()区别

问题描述 js中事件绑定,$("body").on("click")与$("").click()区别 <dl> <dt>性别</dt> <dd> <a href="javascript:void(0);" class="sex_icon set_icon"></a><p>男</p> <a href=&quo

Python中字符串对齐方法介绍

  这篇文章主要介绍了Python中字符串对齐方法介绍,本文介绍Python字符串内置方法ljust.rjust.center的用法,需要的朋友可以参考下 目的 实现字符串的左对齐,右对齐,居中对齐. 方法 字符串内置了以下方法:其中width是指包含字符串S在内的宽度,fillchar默认是空格,也可以指定填充字符 代码如下: string.ljust(s, width[, fillchar]) string.rjust(s, width[, fillchar]) string.center(

Javascript中的call()方法介绍

 这篇文章主要介绍了Javascript中的call()方法介绍,本文讲解了Call() 语法.Call() 参数.Javascript中的call()方法.Call()方法的实例等内容,需要的朋友可以参考下     在Mozilla的官网中对于call()的介绍是: 代码如下: call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. Call() 语法 代码如下: fun.call(thisArg[, arg1[, arg2[, ...]]])   Cal

javascript 事件绑定方法与兼容ie ff解决办法

网页特效 事件绑定方法与兼容ie ff解决办法 var t = document.getelementbyid("tab1"); t.onclick = function tst(){ alert(''); } 第二种方法 var tb = document.getelementbyid("tab1"); if(window.addeventlistener){ // mozilla, netscape, firefox td_value.addeventliste

jQuery文本框(input textare)事件绑定方法教程_jquery

目前1.7以上,jquery​的事件绑定已经用on替换了原来的bind,接下来为大家介绍下bind的使用方法及input textare事件,感兴趣的朋友可以参考下 (1)jquery 绑定事件 目前1.7以上,jquery的事件绑定已经用on替换了原来的bind: 区别:(个人理解)bind是一次绑定事件到每一个子节点:on是只绑定到父节点,然后冒泡到各个子节点: 用法:bind 一个事件,一个方法:$(".class input").bind('click',function(e)

JavaScript中的异常处理方法介绍

 这篇文章主要介绍了详解JavaScript中的异常处理方法,包括基本的try...catch语句和throw语句的使用,需要的朋友可以参考下     有三种类型的编程错误:(1)语法错误和(2)运行时错误(3)逻辑错误: 语法错误: 语法错误,也被称为解析错误,在编译时进行传统的编程语言,并出现在JavaScript解释时. 例如,下面一行将导致一个语法错误,因为它缺少一个右括号: ? 1 2 3 4 5 <script type="text/javascript"> &

Javascript中的call()方法介绍_javascript技巧

在Mozilla的官网中对于call()的介绍是: 复制代码 代码如下: call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. Call() 语法 复制代码 代码如下: fun.call(thisArg[, arg1[, arg2[, ...]]]) Call() 参数 thisArg 复制代码 代码如下: 在fun函数运行时指定的this值.需要注意的是,指定的this值并不一定是该函数执行时真正的this值,如果这个函数处于非严格模式下,则指定为nul