jquery live()动态绑定事件函数用法

我用jquery动态插入节点后,直接绑定click事件,调试半天发现无效,原来需要动态绑定事件,可以用live()函数,如下实例:

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

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

语法

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

向未来的元素添加事件处理器

live() 如何工作
.live()背后神奇的地方就在于它并不将事件绑定到你选定的elements上,而实际上是绑定到了DOM树的跟节点(例子中是$(document)),而是在element中就像一个参数一样进行传递。

那么当你点击一个元素时,click事件就会在DOM树上往上传递,直至到达根节点。这个.click()事件的触发器已经在根节点被.live()创建。这个触发方法将首先检测被点击的目标看是否和.live()调用的选择器相匹配。所以上面的例子中,会检查点击的元素是否和$('a').live()中的$('a')相匹配,如果匹配,那么绑定的方法就会执行了。

因为不管你在根节点内点击了什么,根节点的.click()事件都会被触发,当你点击加入到根节点的任何元素时这个检查都会发生。

如何使用 live() 方法向尚未创建的元素添加事件处理器。

 代码如下 复制代码

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("p").live("click",function(){
    $(this).slideToggle();
  });
  $("button").click(function(){
    $("<p>This is a new paragraph.</p>").insertAfter("button");
  });
});
</script>
</head>
<body>
<p>这是一个段落。</p>
<p>点击任意 p 元素会令其消失。包括本段落。</p>
<button>在本按钮后面插入新的 p 元素</button>
<p><b>注释:</b>通过使用 live() 方法而不是 bind() 方法,新的 p 元素同样会在点击时消失。</p>
</body>
</html>

下面我们来看个实例

 代码如下 复制代码

<html>
    <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script>
    </head>
    <body>
        <input type="button" value="测试" class="test"/>
        <script>
            $(function(){
                //第一个测试按钮是有效的
                $(".test").click(function(){
                    alert("this is ok");
                });
                //第二个按钮点击事件就无效了
                $('<input type="button" value="测试" class="test"/>').insertAfter(".test");
            });
        </script>
    </body>
</html>

用live函数就可以了:

 

 代码如下 复制代码
       <script>
            $(function(){
                $('<input type="button" value="测试" class="test"/>').insertAfter(".test");
                $(".test").live('click',function(){
                    alert("all button is ok");
                });
            });
        </script>

当然,如果你克隆元素clone(true),带上true参数,事件处理函数也是会被复制的,如下:

 代码如下 复制代码

<script>
            $(function(){
                $(".test").click(function(){
                    alert("all button is ok , too !");
                });
                $(".test").clone(true).insertAfter(".test");
            });
</script>

时间: 2024-10-26 16:13:02

jquery live()动态绑定事件函数用法的相关文章

JQuery中DOM事件合成用法实例分析_jquery

本文实例讲述了JQuery中DOM事件合成用法.分享给大家供大家参考.具体分析如下: jQuery有两个合成事件--hover()方法和toggle()方法,类似前面讲过的ready()方法,hover()方法和toggle()方法都属于jQuery自定义的方法. hover()方法 hover()方法的语法结构为:hover(enter,leave); hover()方法用于模拟光标悬停事件.当光标移动到元素上时,会触发指定的第1个函数(enter);当光标移出这个元素时,会触发指定的第2个函

JQuery中DOM事件绑定用法详解_jquery

本文实例讲述了JQuery中DOM事件绑定用法.分享给大家供大家参考.具体分析如下: 在文档加载完成后,如果打算为元素绑定事件来完成某些操作,则可以使用bind()方法来对匹配元素进行特定事件的绑定,bind()方法的调用格式为: bind( type [, data] , fn); bind()方法有3个参数,说明如下. 第1个参数是事件类型,类型包括:blur.focus.load.resize.scroll.unload.click.dblclick.mousedown.mouseup.m

JQuery中DOM事件绑定用法详解

 在文档加载完成后,如果打算为元素绑定事件来完成某些操作,则可以使用bind()方法来对匹配元素进行特定事件的绑定,bind()方法的调用格式为: bind( type [, data] , fn); bind()方法有3个参数,说明如下. 第1个参数是事件类型,类型包括:blur.focus.load.resize.scroll.unload.click.dblclick.mousedown.mouseup.mousemove.mouseover.mouseout.mouseenter.mou

JQuery中DOM事件合成用法实例分析

 jQuery有两个合成事件--hover()方法和toggle()方法,类似前面讲过的ready()方法,hover()方法和toggle()方法都属于jQuery自定义的方法. hover()方法 hover()方法的语法结构为: hover(enter,leave); hover()方法用于模拟光标悬停事件.当光标移动到元素上时,会触发指定的第1个函数(enter);当光标移出这个元素时,会触发指定的第2个函数(leave). 代码为: 1 2 3 4 5 6 7 $(function()

jQuery replaceWith()替换标签函数用法

jquery替换选定元素的内容replaceWith()方法 replaceWith,替换元素 本文章来给各位同学介绍jquery中replaceWith()方法的使用方法,有需要了解的朋友不防进入参考,希望此文章对各位同学有所帮助. replaceWith() 方法将选择的元素的内容替换为其他内容. 我们先在先看一个实例  代码如下 复制代码 <%@ page language="java"contentType="text/html;charset=UTF-8&qu

jquery setTimeOut实现事件函数延时加载实例

在 Window load 事件中,我们可以进行延时处理,这样当页面加载时可以处理一些事件.  代码如下 复制代码 (function fn() {     fn.now = +new Date;     $(window).load(function () {         if (+new Date - fn.now < 1000) setTimeout(fn, 1000);         // Do something     }); })(); 如我们想在 load 事件执行时,进行

JQuery中Bind()事件用法分析

这篇文章主要介绍了JQuery中Bind()事件用法,实例分析了Bind()事件的功能.特点与绑定事件时的使用技巧,需要的朋友可以参考下 本文实例分析了JQuery中Bind()事件用法.分享给大家供大家参考.具体分析如下: 我们先看一下它的定义: ? 1 .bind( eventType [, eventData], handler(eventObject)) .Bind()方法的主要功能是在向它绑定的对象上面提供一些事件方法的行为.期中它的三个参数的意义分别如下: eventType是一个字

jQuery中click事件的定义和用法_jquery

本文实例讲述了jQuery中click事件的定义和用法.分享给大家供大家参考.具体分析如下: 当鼠标指针在匹配元素上方,然后按下并松开鼠标左键或者调用click()方法都会触发click事件. click()方法也可以绑定事件处理方法. 语法结构一: 触发click事件. 复制代码 代码如下: $(selector).click() 语法结构二: 为click事件绑定事件处理方法. 复制代码 代码如下: $(selector).click(data,function) 参数列表: 参数 描述 d

jQuery中change事件用法实例_jquery

本文实例讲述了jQuery中change事件用法.分享给大家供大家参考.具体分析如下: change事件会在匹配元素失去焦点或者其值获得焦点并且改变时触发. 一个完整的事件过程,不但要有能够触发事件的条件,而且还要有事件处理程序.可以通过change()方法为change事件绑定事件处理程序.例如: 复制代码 代码如下: $("input").change(function(){$("input").css("backgroundColor",&