• 关于jquery动态添加的新元素无法绑定事件那些事


    jQuery动态添加的元素绑定事件处理函数代码[live]


    以前我们定义事件,比如为元素定义单击事件是这样写的: 
    代码如下:

    $('input').click(function () { 
    //处理代码 
    }); 
     

    或 
    代码如下:

    $('.clickme').bind('click', function() { 
    // Bound handler called. 
    }); 
     

    但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定。即使你使用jquery的clone函数,它并不能将事件也复制(到目前为止我还不清楚它是为什么这样定义,是没法复制还是刻意这么处理,以防止出现某些异常,这还有待去分析一下jquery的源代码)。 
    现在,使用live你可以轻松搞定,

    $('.clickme').live('click', function() { // Live handler called. });这样,你即使在后面动态插入的元素,也会被绑定事件,$('body').append('<div class="clickme">Another target</div>');

    定义和用法

    live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

    通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素比如由脚本创建的新元素)。

    问题:使用jQuery的live()方法绑定事件,有时会出现重复绑定的情况,如,当点击一个按钮时,此按钮所绑定的事件会并执行n遍。

    解决:使用die()方法,在live()方法绑定前,将此元素上的前面被绑定的事件统统解除,然后再通过live()方法绑定新的事件。

    Js代码
    1. //先通过die()方法解除,再通过live()绑定   
    2. $("#selectAll").die().live("click",function(){   
    3.         //事件运行代码   
    4.  });  

     die()方法简介:

    Js代码

    die([type], [fn])<SPAN style="WHITE-SPACE: normal"> </SPAN>  

    die([type], [fn]) 

    概述

    jQuery 1.3新增。此方法与live正好完全相反。

    如果不带参数,则所有绑定的live事件都会被移除。

    你可以解除用live注册的自定义事件。

    如果提供了type参数,那么会移除对应的live事件。

    如果也指定了第二个参数function,则只移出指定的事件处理函数。

    jquery 如何给新生成的元素绑定 hover事件?

    $('ul li').live('mouseenter',function(){
    $('#tips').show();
    }).live('mouseleave',function(){
    $('#tips').hide();
    });
  • 相关阅读:
    AWVS 安全渗透扫描
    Nmon 监控结果分析
    Jmeter 插件图表分析
    Nmon 安装
    子母钟系统(卫星时钟系统)在医院网络中的架设与设计
    从NTP网络授时到社交GPS千奇百怪的应用方式
    NTP网络时钟系统技术参数与详细介绍
    GPS北斗子母钟系统在某机场系统中的应用
    GPS北斗时间频率信号源的定义及简介
    ntp对时服务器同步网络中计算机详细配置
  • 原文地址:https://www.cnblogs.com/runong/p/3539530.html
Copyright © 2020-2023  润新知