zoukankan      html  css  js  c++  java
  • jquery获取dom元素身上的绑定事件的问题

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

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

    jQuery1.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就可以实现我们想我的功能了。 */
  • 相关阅读:
    17。3.12---re模块--正则表达式操作指南
    17.3.12---还有未整理的模块
    17.3.12---xmlrpclib模块
    17.3.12----math模块
    17.3.12--smtplib模块发送邮件__抄送,安装与下载
    17.3.12---logging日志模块level配置操作
    17.3.12---urlparse模块的URL下载
    17.3.12---socket
    17.3.12--urllib2模块
    SQLSERVER 中的共用表达式(CTE)
  • 原文地址:https://www.cnblogs.com/ysxq/p/7120243.html
Copyright © 2011-2022 走看看