转载

jQuery** 1.8.0版本之前,我们要想获取某个DOM绑定的事件处理程序可以这样:**

$.data(domObj,'events');//或者$('selector').data('events')

jQuery 1.8.0版本开始,jQuery突然不支持这样使用了,而是改到了一个叫’_data’的函数功能上了,即,1.8.0及以后的版本你可以这么用:

$._data(domObj,'events');//注意,这里不能像$('selector')._data('events')这样用了。

    /*例如可以写成*/
    $._data($('#box').get(0),'events') // 这里是获取id为box的dom元素身上绑定的所有事件
    $._data($('#box').get(0),'events')['click']// 这里是获取id为box的dom元素身上绑定的click事件

    /*或写成*/
    $._data($('#box').get(0)).events

    /*或还可以写成*/
    $.cache[$('#box').get(0)[$.expando]].events

兼容兼容各个jQuery版本的方式,这样获取即可:

var eventsData = $.data(domObj,'events') || $._data(domObj,'events');//这个改变在easyui 1.3.1的源码中也有体现。

动态移除和恢复对象上的事件

var arr_cache= $._data($('#targetObject').get(0),'events')['click']; //缓存对象身上事件

    $("#btn_clear").click(function(){
        $._data($('#targetObject').get(0),'events')['click'] = undefined;//清除事件时候给对象身上事件赋值为undefined
    });
    $("#btn_revert").click(function(){
        $._data($('#targetObject').get(0),'events')['click'] = arr_cache;//恢复事件的时候给对象身上事件赋值为之前存好的缓存arr_cache
    });

** 利用Class动态添加或阻止对象上的事件**

$('#domObj').click(function(){
            if($(this).hasClass('off_fn')){return}
           //这里写你的代码
        })

        /*要动态添加或阻止某个元素上所加的事件可以在该元素的事件内添加“if($(this).hasClass('off_fn')){return}”到时候我们只要在该元素身上添加或移除“off_fn”class就可以实现我们想我的功能了。 */
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐