2020-12-26 JQ操作通on live...绑定的事件,事件去了哪里???

3 篇文章 0 订阅

需求如下:在我使用JQGrid的时候,发现有个click事件给行,和行内的checkbox同时添加了,如果解绑就会同时解绑,我希望解绑前,把事件绑定到checkbox里面先。

以下用div进行模拟

在这里插入图片描述
在这里插入图片描述

首先给div#a ==(后面皆用a代替)==添加一个click方法,这里简单说明以下onclick和click区别,onclick是事件,表示游览器接收到的操作,click代表方法,用来触发onclick事件,可以简单理解就是在事件上面在封装了一层函数(方法)。我现在就是想让div#b ==(后面皆用b代替)==也可以触发alert。你可能会想在写多一个不就可以了吗?但是在真实操作别人的工具时候,并没有那么简单。基于万物皆对象的原理,我想找到绑定在a里面的函数把他赋值给b。

先给一些错误的操作,不喜欢可以跳过此处

在这里插入图片描述
首先先给出我一开始以为可以的操作,第一个就不说了确实可以触发,但是是触发a里面的事件,b-》a-》function。b本身是没有自己的方法,所以在a解绑后,方式1没有反应。第二个是我以为可以成功的,想法和思路都已经靠边了,但还是失败了,没有生效。

高潮来了!!!

<!--在调试jquery的事件绑定时会用到。查看某元素是否绑定上了事件。-->

<!--在JQuery1.8之前:-->
var obj=$('div');
var events=obj.data('events');
<!--在JQuery1.8中,之后:-->
var objs=$('div');
var events=$._data(objs[0],'events');
<!--为了兼容-->
var events=$('div').data('events')||$._data($('div')[0],'events');


   var events=$._data($('#a')[0],'events')
    console.log(events);

== 注意1.8以后是要给定的JS对象,而不是JQ对象 ==

在这里插入图片描述

看一下这个events对象,这个对象属性是”方法名“,值是一个‘方法数组’,也就是说同一个对象的同一个方法可以绑定多个函数。结合我之前学到的JQ为了兼容ie 给元素添加EventCache对象(link) 数组里面就是给定的方法,亮点就是handler属性那个 f(e),就是我写的那个方法。那么解决办法就显而易见的了。

在这里插入图片描述

!

在这里插入图片描述

总结: 秉承着万物皆对象的原理,只有你想不到没有它做不到。其实解绑重写方法,也不是不可以,不过偷懒一向是程序员的优点美德。能少写一点就尽量少写一点。切记尽量不要去cv,创造属于自己的创造

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值