`
仅此而已
  • 浏览: 61436 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

jquery live和bind

 
阅读更多
$(function(){
	$('a').bind('click', function(){   var newwindow = window.open($(this).attr('href'),'','height=200,width=150');   if (window.focus) {     newwindow.focus();   }   return false;}); 
	});


	$('a').live('click', function(){   var newwindow = window.open($(this).attr('href'),'','height=200,width=150');   if (window.focus) {     newwindow.focus();   }   return false;}); 


live 不需要知道事件绑定的时机
 
平时在使用jQuery进行AJAX操作的时候,新生成的元素事件会失效,有时候不得不重新绑定一下事件,但是这样做很麻烦。例如评论分页后对评论内容的JS验证会失效等。在jQuery1.3之前有一个插件会解决这个问题
http://plugins.jquery.com/project/livequery ,jQuery1.3增加了一个live()方法,下面是手册上的说明:

jQuery 1.3中新增的方法。给所有当前以及将来会匹配的元素绑定一个事件处理函数(比如click事件)。也能绑定自定义事件。

目前支持 click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress, keyup。

还不支持 blur, focus, mouseenter, mouseleave, change, submit

与bind()不同的是,live()一次只能绑定一个事件。

这个方法跟传统的bind很像,区别在于用live来绑定事件会给所有当前以及将来在页面上的元素绑定事件(使用委派的方式)。比如说,如果你给页面上所有的li用live绑定了click事件。那么当在以后增加一个li到这个页面时,
对于这个新增加的li,其click事件依然可用。而无需重新给这种新增加的元素绑定事件。

.live()与流行的liveQuery插件很像,但有以下几个主要区别:

.live 目前只支持所有事件的子集,支持列表参考上面的说明。 
.live 不支持liveQuery提供的“无事件”样式的回调函数。.live只能绑定事件处理函数。 
.live 没有”setup”和”cleanup”的过程。因为所有的事件是委派而不是直接绑定在元素上的。 
要移除用live绑定的事件,请用die方法
用法示例:

<div class=”myDiv”></div>

jquery:

$(“.myDiv”).live(“click”, function(){

alert(“clicked!”);

});
如果使用javascript动态创建一个class为mydiv的元素,点击元素依然会有弹出。为什么使用live后就有了呢?这是因为jquery利用了事件的冒泡机制,直接把事件绑定在了document上,然后通过event.target找出事件的来源。
这跟jquery.livequery插件不一样,jquery.livequery每20毫秒做一次检查,如有新生成则重新绑定一次事件。

使用live当然有利也有弊:
好处就是:元素更新时不用反复去定义事件。
坏处就是:把事件绑定在document上会在页面上每一个元素都呼叫一次,如使用不当会严重影响性能。而且不支持blur, focus, mouseenter, mouseleave, change, submit。

转自:http://www.cnblogs.com/wujilong/articles/1866834.html
 

 

分享到:
评论

相关推荐

    jQuery:bind() delegate() live()事件绑定

    在探讨jQuery中的`bind()`, `delegate()`, 和`live()`事件绑定方法的区别时,我们需要深入理解它们在处理DOM事件时的独特方式。这些方法在不同的场景下提供了灵活且高效的选择,帮助开发者创建响应式和动态的Web应用...

    jQuery中bind(),live(),delegate

    随着jQuery版本的更新,`on()`方法取代了`bind()`, `live()`, 和 `delegate()`,成为统一的事件绑定接口。`on()`提供了更大的灵活性,可以处理当前和未来的所有元素,同时也支持代理模式。下面是如何使用`on()`的...

    Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解

    在我们日常开发中经常会使用到.bind()、.live()、.delegate()和.on(),有些同学会对这四者存在一些疑虑,所以下面这篇文章主要给大家介绍了关于Jquery中.bind()、.live()、.delegate()和.on()之间区别的相关资料,...

    jquery绑定事件 bind和on的用法与区别分析

    而 `on` 是从 jQuery 1.7 版本开始引入的,用来替代 `bind`、`live` 和 `delegate` 等事件处理方法。`on` 更加灵活,支持更多的功能,如事件委托。`on` 的基本语法如下: ```javascript $(selector).on(event, ...

    详解Jquery实现ready和bind事件

    `on`方法更为通用,可以用来替代`bind`、`live`和`delegate`方法。`on`方法的使用如下: ```javascript $(selector).on(eventType, selector, data, handler); ``` - `selector`:可选,用于选择内部的子元素进行...

    深入理解jQuery中live与bind方法的区别

    在jQuery库中,`live()` 和 `bind()` 都是用来为元素绑定事件处理函数的方法,但它们之间存在着显著的差异,这些差异对于理解和优化JavaScript代码至关重要。本文将深入探讨这两个方法的区别及其应用场景。 首先,`...

    jquery中live()方法和bind()方法区别分析

    在早期版本的 jQuery 中,`live()` 方法和 `bind()` 方法是两种主要的事件绑定方式,它们在功能和使用上有各自的特点和限制。 `live()` 方法主要用于为当前及未来添加到 DOM 中的元素绑定事件处理器。例如,如果有...

    JQuery 动态删除添加html元素bind事件

    理解和熟练运用`append()`、`remove()`、`bind()`、`live()`(或`on()`)等方法,对于提高网页交互的用户体验至关重要。在实际项目中,根据jQuery的版本和需求选择合适的方法和插件,能有效提升开发效率和代码质量。

    jquery事件代理方式的区别联系

    本文将深入探讨jQuery中的事件代理方式,包括`live`, `delegate`和`bind`的区别与联系。 ### 事件冒泡与事件代理原理 事件冒泡是指事件从最深的节点开始,逐级向上层节点传播事件的过程。当一个元素触发事件,该...

    解析jQuery的三种bind/One/Live事件绑定使用方法

    本文将详细介绍jQuery中的三种事件绑定方法:bind、one和live,以及它们各自的特点和应用场景。 1. **bind**:`bind()` 是jQuery中最基础的事件绑定方法,它允许我们将事件处理器绑定到DOM元素上。例如,我们可以...

    jQuery中绑定事件bind() on() live() one()的异同

    在不同的版本中,jQuery 提供了多种方法来绑定事件,主要包括 bind()、on()、live() 和 one()。接下来,我们将详细探讨这些方法的相似点和不同点。 首先,让我们了解一下 bind() 方法。bind() 是 jQuery 中最传统的...

    Jquery绑定事件(bind和live的区别介绍)

    标题提到的`bind`和`live`都是jQuery中用于事件绑定的方法,它们虽然在功能上有相似之处,但在使用场景和性能上有所不同。以下是对这两个方法的详细解释和比较: 1. `bind()`方法: `bind()`是jQuery中最基础的...

    jQuery的三种bind/One/Live/On事件绑定使用方法

    `on()`是jQuery 1.7引入的新事件绑定机制,它统一了`bind()`, `live()`, 和 `delegate()`的功能。`on()`提供了更大的灵活性,可以通过选择器限制事件的传播,同时支持动态绑定和事件委托。`on()`的参数结构如下: ...

    jQuery中的.bind()、.live()和.delegate()之间区别分析

    在讨论jQuery中的事件绑定方法时,.bind()、.live()和.delegate()是三种重要的技术。为了深入理解这些方法之间的区别和特点,首先需要对DOM事件的传播机制有所了解。在DOM事件模型中,事件传播分为捕获和冒泡两个...

    jQuery中bind与live的用法及区别小结

    在jQuery中,`bind()`和`live()`是两种常见的事件绑定方法,它们允许开发者为页面上的元素添加事件监听器。然而,两者之间存在着显著的区别,理解这些差异对于编写高效的前端代码至关重要。 首先,`bind()`是jQuery...

    jquery 1.26和1.3的

    jQuery是JavaScript库中的巨头,以其简洁的API和强大的功能赢得了开发者们的广泛喜爱。在这个主题中,我们将探讨jQuery的两个重要版本:1.26和1.3。这两个版本虽然已经相对较旧,但它们包含了jQuery的核心特性,对于...

Global site tag (gtag.js) - Google Analytics