Jquery动态绑定事件处理函数 bind / on / delegate

1、bind方法绑定的事件处理函数不会应用到后来添加到DOM中的新元素。比如你在用bind给页面元素绑定事件之后,又新添加了一些与之前绑定过事件的元素一样的DOM元素,但是这些事件并不能在新的DOM元素上有体现。

如:

 $(document).ready(function(){
      $("img").bind({
          mouseenter:function(){
                   $(this).css("border","thick solid red");
           },
           mouseout:function(){
                  $(this).css("border","thick solid green");
           }
         });
       $("#row").append("<img src=‘./idiot.png‘/>");
      });

此时新插入的img并没有绑定事件。

2、on方法绑定事件,并非直接把事件处理函数绑定到目标元素上。实际上它是在document对象上绑定了一个事件处理函数,该函数在触发时检查触发事件的元素是否匹配选择器。一旦事件与元素匹配成功,就调用绑定的事件处理函数。实际上,on方法是努力的把事件处理函数绑定要新的元素上。

$(document).ready(function(){
      $(document).on({
          mouseenter:function(){
                   $(this).css("border","thick solid red");
           },
           mouseout:function(){
                  $(this).css("border","thick solid green");
           }
         },"img"); $("#row").append("<img src=‘./idiot.png‘/>"); });

但是,on方法绑定事件处理函数可能会有一个问题,在处理函数执行之前,我们需要等事件传播到document元素,与on方法相比delegate更直接、高效一些。

3、delegate方法绑定事件,允许我们在页面上指定任意一个元素作为监听事件的元素,只绑定一个事件处理函数,绑定速度相对于bind和on算更快的。

$(document).ready(function(){
      $("#row").delegate("img",{             mouseenter:function(){ 
        $(this).css("border","thick solid red");       },       mouseout:function(){         $(this).css("border","thick solid green");       }     },);     $("#row").append("<img src=‘./idiot.png‘/>"); });
时间: 2024-10-06 03:23:48

Jquery动态绑定事件处理函数 bind / on / delegate的相关文章

Jquery之事件绑定(bind(),live(),delegate(),on())

1..bind() 描述: 为一个元素绑定一个事件处理程序. .bind()一个基本的用法: $(selector).bind('click', function() { alert('User clicked on "foo."'); }); 可以直接用原生js替代为: $(selector).click( function() { alert('User clicked on "foo."'); }); 在jQuery1.4.3,您现在可以通过传递false代替

JQuery的click、bind、delegate、off、unbind

.click与.bind .click和.bind都是给每个元素绑定事件,对于只绑定一个click事件,.bind事件的简写就是.click那种方式. 这两种方式都会出现两个问题: 第一个问题,如果要绑定的事件特别多,比如要绑定100个元素,要绑定100次,对于大量元素来说,影响到了性能.但是如果是id选择器,因为id唯一,用bind()方法就很快捷了. 第二个问题,对于尚未存在的元素,无法绑定.动态添加一个span元素,点击这个span元素,会发现没有动作响应. 那么你就会问,为什么要出现.b

jquery用on代替bind(),live(),delegate()的方法

Js的功能确实非常强大,奈何我一个php程序员一直在js上没有投入足够的精力去研究,每次遇到不会的都是去百度,以后有时间真的应该买本书系统的学习一下 // Bind $( "#members li a" ).on( "click", function( e ) {} ); $( "#members li a" ).bind( "click", function( e ) {} ); // Live $( document ).

jquery事件之事件处理函数

一.事件处理 方法名 说明 语法 (events 事件类型,data数据,handler 事件处理函数,selector 选择器) Bind( 为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数.没用on关键字 jQueryObject.bind( events [, data ], handler ) One 为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数.只绑定一次 jQueryObject.one( events [, data ], handler 

jquery bind live delegate on

1.bind() $(selector).bind(event,[data],function) bind方法给每个$(selector)元素都注册一个事件处理函数,不支持未来增加的元素.上面两段代码等价的. $('p').bind('click',function(){ alert('p'); }); $('p").click(function(){ alert('p'); }); 2.live() $(selector).live(event,[data],function) live方法把

JQuery事件绑定函数one:绑定的事件处理函数只会被执行一次

JQuery绑定事件处理函数,有两种方式(方式1和方式2)是最常用的,方式3使用的较少. 方式1: $("#button").click(function(){ }); 这种方式很简单,也是平时编码最常用的做法.HTML中原始的事件,如onclick.onmouseover.onkeypress等,JQuery对名称进行了简单的封装,如onclick与JQuery的click对应,onmouseover与JQuery的mouseover对应.查看JQuery的API可以发现:JQuer

【转】jQuery on()选择器函数

on()函数用于为指定元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind(). delegate(). live()等事件函数. 即使是执行on()函数之后新添加的元素,只要它符合条件,绑定的事件处理函数也对其有效. 此外,该函数可以为同一元素.同一事件类型绑定多个事件处理函数.触发事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数.

AJAX---jQuery全局事件处理函数

jQuery全局事件处理函数 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jQuery全局事件处理函数</title> <style> .loading { display: none; position: fixed; } </style> </head> <

jQuery 2.0.3 源码分析 事件绑定 - bind/live/delegate/on

转:http://www.cnblogs.com/aaronjs/p/3440647.html?winzoom=1 事件(Event)是JavaScript应用跳动的心脏,通过使用JavaScript ,你可以监听特定事件的发生,并规定让某些事件发生以对这些事件做出响应 事件的基础就不重复讲解了,本来是定位源码分析实现的, 所以需要有一定的基础才行 为了下一步更好的理解内部的实现,所以首先得清楚的认识到事件接口的划分 网上资料遍地都是,但是作为一个jQuery系列的源码分析,我还是很有必要在重新