JS JQ 事件绑定与多事件处理 onclick、bind、unbind

本文探讨了JavaScript中onclick属性与jQuery的bind、unbind函数的事件绑定与解绑。内容包括onclick属性的多事件处理,jQuery bind的使用方式,以及如何处理带参数的事件函数。同时指出jQuery unbind无法解绑onclick属性定义的事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作需要,研究了一下时间绑定的事,这里拿点击事件为例,从 onclick属性,jquery的bind函数以及unbind函数做了一些测试(谷歌浏览器) 顺便记录一下测试结果


onclick属性:

1、直接在DOM文档中添加 onclick属性,单一属性可以加多个函数,用逗号隔开,如果有多个onclick属性 则只识别第一个,后面的都无效

2、jquery的unbind函数无法解绑onclick属性中定义的事件,它只能解绑通过jquery的bind函数添加的事件


对于同名函数,bind 一次绑定一个,unbind 一次性全部解绑



jQuery事件绑定函数: bind, 官方定义:

$(selector).bind(event,data,function)

其中 selector是选择器,不解释, event 可选: click,keypress load submit dblclick keydown change resize mouseenter keyup scroll focus 等

data 

function 不能写参数列表 即  .bind("click", fn1(param1));是错误的写法, 写上之后不绑定只是执行一次, 所以对于无参的函数比较简单,有两种写法,

正确写法1 : .bind("click", fn1); 

正确写法2 : .bind("click", function() { fn1() };

正确写法3(一次绑定多个的快捷写法):.bind({"click": fn1}, {"click", fn2}...);

对于有参的函数:

直接写参数列表肯定是不行了,在网上看到其他人的解决办法,一共三种,但都有瑕疵

第一种:.bind("click", function() { fn1(param1); }); 缺点:匿名,后面无法操作了 后面的 unbind 就没法去定位并删掉

第二种:.bind("click", data, fn2);  data是个js对象或数组  传递后 存储在自定义函数的 param.data属性下 

比如: 函数 function fn2(event) { alert(event.data) } 如果是普通字符串,那么这个值就是 event.data,如果是数组 event.data[i] 对象 event.data.objName 类推

缺点:可能导致自定义的函数不可重用,需要先判断参数类型 

第三种:.bind("click", fn1(param)); 奇怪,这个不是上边说过的错误的吗?但是来看看自定义的函数,

function fn1(str) {

return function() {

alert(str);

}

}

用了闭包。。。但是缺点还是有的,就是 unbind即使知道了函数名也无法解绑

jQuery 事件解绑函数:unbind 官方定义

$(selector).unbind(event,function)
其中,function为undefined时 解绑 由jquery绑定的 这个事件的全部函数,不管document自带的属性

同样,function不能包含参数列表,只能有函数名称

正确写法: .unbind("click", fn1);

jQuery attr函数 直接修改onclick的值  通过attr修改的 unbind一样删不掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值