- 浏览: 1112673 次
文章分类
- 全部博客 (379)
- S2SH (16)
- stuts2 (0)
- java语言 (81)
- JSP (17)
- <html>元素 (11)
- javaweb (4)
- web容器 (3)
- ext (23)
- javaScript (48)
- ant (1)
- liferay (1)
- sql (9)
- css (42)
- 浏览器设置 (3)
- office_world (1)
- eclipse (4)
- 其它 (28)
- 操作系统 (5)
- android (6)
- Struts2 (11)
- RegEx (3)
- mysql (5)
- BigDATA (1)
- Node.js (1)
- Algorithm (10)
- Apache Spark (1)
- 数据库 (5)
- linux (2)
- git (1)
- Adobe (3)
- java语言,WebSocket (1)
- Maven (3)
- SHELL (1)
- XML (2)
- 数学 (2)
- Python (2)
- Java_mysql (1)
- ReactJS (6)
- 养生 (4)
- Docker (1)
- Protocols (3)
- java8 (2)
- 书籍 (1)
- Gradle (2)
- AngularJS (5)
- SpringMVC (2)
- SOAP (1)
- BootstrapCSS (1)
- HTTP协议 (1)
- OAuth2 (1)
最新评论
-
Lixh1986:
Java并发编程:自己动手写一把可重入锁https://blo ...
Java之多线程之Lock与Condition -
Lixh1986:
http://win.51apps.com.cn/https: ...
temp -
ztwsl:
不错,支持很好
HttpServletRequest和ServletRequest的区别 -
guodongkai:
谢谢您能将知识精华汇编总结,让初学者们从原理中学会和提高。
javaScript之function定义 -
kangwen23:
谢谢了,顶顶
struts2中的ValueStack学习
通过下面的一个实例理解 jQuery 的 live(), delegate(), on() 方法
How to bind event to element after generated?
页面元素如何在生成后绑定事件?
Question:
I have this script :
and I have this element :
and I have another script to load some html :
in my result from ajax I have some button that have .btn-delete-confirm class
but when clicked on them nothing happen .
the sample of result like this :
how can I resolve this ?
Answer:
I would like to know which version of jQuery are you using?
According to the jQuery documentation:
.live() could have been used to bind events to future elements, but it has been deprecated.
.delegate() and .on() can be used for this
purpose now. I can see that the code you wrote uses .on().
This should work fine unless you are not using version 1.7+.
The .on() method attaches event handlers to the currently selected set of elements in the jQuery object.
As of jQuery 1.7, the .on() method provides all functionality required for attaching event handlers.
- For help in converting from older jQuery event methods, see .bind(), .delegate(), and .live().
- To remove events bound with .on(), see .off().
- To attach an event that runs only once and then removes itself, see .one()
.delegate( selector, eventType, handler ) - Returns: jQueryversion deprecated: 3.0
Description:
Attach a handler to one or more events for all elements that match
the selector, now or in the future, based on a specific set of root elements.
Examples:
------------------------------------------------------------------
Answer 2:
You are trying to add an eventlistener to something that isnt there yet.
This will result in an error, and the event wont fire again.
So try to add the listener AFTER the ajax import.
comments:
- I dont want to repeat the same code .
- your answer destroys the elegance of delegation of events for dynamic elements.
-
引用请注明:
原文出处:http://lixh1986.iteye.com/blog/2341345
-
How to bind event to element after generated?
页面元素如何在生成后绑定事件?
Question:
I have this script :
$(window).load(function () { $(document).on('click', '.btn-delete-confirm', function () {...}); });
and I have this element :
<div id="attachments"></div>
and I have another script to load some html :
$(document).on('click', '.nav-tabs li a[href="#attach"]', function () { $.ajax({ url: loadAttachmentsURL, data: { equipmentId: equipmentId }, success: function (data) { $("#attachments").html(data); } }); });
in my result from ajax I have some button that have .btn-delete-confirm class
but when clicked on them nothing happen .
the sample of result like this :
<td><a data-id="73b2db39-199c-845c-8807-6c6164d2d97d" data-url="/Admin/EquipmentAttachment/Delete" class="btn-delete-confirm btn">Delete</a></td>
how can I resolve this ?
Answer:
I would like to know which version of jQuery are you using?
According to the jQuery documentation:
.live() could have been used to bind events to future elements, but it has been deprecated.
.delegate() and .on() can be used for this
purpose now. I can see that the code you wrote uses .on().
This should work fine unless you are not using version 1.7+.
引用
The .on() method attaches event handlers to the currently selected set of elements in the jQuery object.
As of jQuery 1.7, the .on() method provides all functionality required for attaching event handlers.
- For help in converting from older jQuery event methods, see .bind(), .delegate(), and .live().
- To remove events bound with .on(), see .off().
- To attach an event that runs only once and then removes itself, see .one()
引用
.delegate( selector, eventType, handler ) - Returns: jQueryversion deprecated: 3.0
Description:
Attach a handler to one or more events for all elements that match
the selector, now or in the future, based on a specific set of root elements.
// jQuery 1.4.3+ $( elements ).delegate( selector, events, data, handler ); // jQuery 1.7+ $( elements ).on( events, selector, data, handler );
$( "table" ).delegate( "td", "click", function() { $( this ).toggleClass( "chosen" ); });
$( "table" ).on( "click", "td", function() { $( this ).toggleClass( "chosen" ); });
Examples:
$( "body" ).delegate( "p", "click", function() { $( this ).after( "<p>Another paragraph!</p>" ); });
------------------------------------------------------------------
Answer 2:
You are trying to add an eventlistener to something that isnt there yet.
This will result in an error, and the event wont fire again.
So try to add the listener AFTER the ajax import.
$(document).on('click', '.nav-tabs li a[href="#attach"]', function () { $.ajax({ url: loadAttachmentsURL, data: { equipmentId: equipmentId }, success: function (data) { $('#attachments').html(data); $('.btn-delete-confirm').on('click', function () {...}); } }); });
comments:
- I dont want to repeat the same code .
- your answer destroys the elegance of delegation of events for dynamic elements.
-
引用请注明:
原文出处:http://lixh1986.iteye.com/blog/2341345
-
发表评论
-
Javascript 测试框架之 隐式声明 之 describe
2019-06-25 15:26 2590为什么使用 javascript 测试框架时,没有显式导入 d ... -
JavaScript之ECMAScript6新特性之_03_箭头函数(Arrow Function)
2018-01-25 13:46 1117一、简介 箭头函数(Arrow Function)是 ES6 ... -
JavaScript之ECMAScript6新特性之_02_线程异步阻塞: Promise, Async / await
2018-01-12 16:51 2325刚出来不久的 ES8 包含了 async 函数,它的出现,终于 ... -
JavaScript之ECMAScript6新特性之_01_开篇
2017-08-17 02:54 603点此查看全部: http://es6-features.org ... -
jQuery Versions - browser support
2017-08-12 04:19 1616jQuery 3.2.1 Support Deskto ... -
基于HTML5实现的中国象棋游戏
2017-06-24 02:24 1688HTML5实现中国象棋游戏 http://www.w2bc.c ... -
JavaScript之跨域请求解决方案
2017-06-07 11:03 3972浏览器处于安全原因,在使用 Ajax 进行请求访问时,不允许跨 ... -
JavaScript之 25 道面试题
2017-04-17 17:05 95325 Essential JavaScript Intervi ... -
JavaScript小应用之分页算法
2017-03-16 12:56 665效果图: function getPagina ... -
jQuery之empty() VS. remove()
2017-03-16 10:32 721jQuery empty() vs remove() Wh ... -
jQuery之 prop() VS. attr()
2017-03-14 16:43 658attr() 用于自定义属性,id ; prop() 用于 ... -
jQuery之mouseover,mouseover,mouseout,mouseleave
2017-03-14 10:20 655Jquery mouseenter() vs mouseove ... -
javascript之JS操作iframe
2017-02-28 14:56 2193JS操作iframe 1. 获得iframe的w ... -
javascript之面向对象编程之原型继承
2017-01-02 15:34 1126前文讲到“属性继承” ... -
HTML5之Cookie,localStorage 与 sessionStorage
2016-12-22 18:35 843详说 Cookie, LocalStorage 与 ... -
javascript之小应用:网页在线聊天
2016-11-08 11:48 4296概览 这款使用 PHP 和 javascript 搭建的 ... -
javascript之编程序题目
2016-11-06 17:30 10531. 判断两个字符串是否:字母相同切长度相同(空格不算)。 ... -
javascript之面向对象编程之属性继承
2016-10-23 21:09 914函数继承可以分为两种:1、继承其 this 属性 2、继承其 ... -
javascript 之 undefined
2016-08-12 11:01 709一、用法 undefined 关键字有两种用法: 1. 如 ... -
javascript之 == vs ===
2016-06-12 15:59 654一、Comparison Overview 1. Speed ...
相关推荐
今天我们将深入探讨jQuery中的事件绑定方法,包括`bind()`, `live()`, `delegate()`,以及后来推出的`on()`方法。这四个方法都是为了帮助开发者更方便地管理页面上的事件,特别是对于动态生成的元素。 1. **bind()*...
本文主要探讨了四个常用的事件绑定方法:bind(), live(), delegate(), 和 on(),并提供了实例来帮助理解它们的区别和用途。 1. **bind()**: - `bind()` 是最基础的事件绑定方法,用于向匹配的元素添加一个或多个...
在我们日常开发中经常会使用到.bind()、.live()、.delegate()和.on(),有些同学会对这四者存在一些疑虑,所以下面这篇文章主要给大家介绍了关于Jquery中.bind()、.live()、.delegate()和.on()之间区别的相关资料,...
然而,值得注意的是,从jQuery 1.7版本开始,live()和delegate()方法已被废弃,推荐使用on()方法来替代它们。on()方法是jQuery提供的一个更强大、更灵活的事件委托方法,它允许开发者在指定的元素上绑定一个或多个...
然而,随着jQuery的发展,为了提供更高效和灵活的事件处理,出现了`one()`、`live()`以及后来的`on()`方法。 1. `bind()` `bind()`是jQuery中最早用于绑定事件的方法,它可以将一个或多个事件处理函数附加到指定...
在 jQuery 1.7 之后,引入了 `on()` 和 `off()` 方法,这两个方法可以替代 `live()`、`bind()` 和 `delegate()` 方法,并且提供了更多的灵活性和强大的事件委托能力。例如,`$(document).on('click', '.selector', ...
5. **替代方案**:随着jQuery版本的更新,`live()` 已被弃用,可以使用 `on()` 方法来代替 `delegate()`。 理解并熟练掌握 `delegate()` 方法,能够帮助开发者更高效地处理动态内容的事件绑定,提高代码的可维护性...
最后需要指出的是,随着jQuery的更新,.live()和.delegate()方法已被废弃,推荐使用.on()方法来替代。.on()方法提供了更为灵活的事件委托机制,它允许开发者在任何父元素上绑定事件,这样就可以更容易地管理事件监听...
在jQuery 1.7之后,推荐使用on方法来替代live和delegate方法。on方法是一种更灵活、更强大的方式,它不仅可以实现事件委托,还可以绑定多个事件处理器。其基本用法如下: ```javascript $("#list").on("click", "td...
live()方法已在jQuery 1.7之后被废弃,而delegate()方法也被推荐不再使用,取而代之的是on()和off()方法。 使用delegate()方法的一个示例是,如果你想为一个动态生成的列表中的每个元素绑定点击事件,而列表本身是...
在jQuery库中,有四种主要的方法用于绑定事件处理程序:`.bind()`, `.live()`, `.delegate()`, 和 `.one()`。这些方法各有特点,适用于不同的场景,下面我们将逐一深入探讨它们的用法和区别。 1. **.bind() 方法** ...
on() 方法是 jQuery 1.7 之后推荐的事件绑定方式,它替代了 bind()、live() 和 delegate() 方法。on() 方法同样支持为当前和未来的元素绑定事件,并且可以一次绑定多个事件处理器。实际上,on() 方法是一个更为通用...
`.delegate()` 和 `.live()`(在jQuery 1.7后被 `.on()` 替代)则支持事件代理,使得动态生成的元素也能响应事件。 ### 四、jQuery AJAX jQuery 的 AJAX 功能强大,如 `.ajax()`, `.get()`, `.post()` 等方法使得...
在现代的jQuery版本中,on()方法取代了之前版本中的.bind(), .live(), 和.delegate()方法。 ### on()方法绑定多个选择器、多个事件的关键知识点: 1. **on()方法语法**: - 简单事件绑定:`$(selector).on(events...
5. `on()`: 事件绑定是jQuery的重要特性,`on()`方法取代了早期的`bind()`、`live()`和`delegate()`,提供了一种统一的事件处理方式。它可以处理当前及未来的元素,增强了事件处理的灵活性。 6. `event....
之所以有这么多类型的绑定方法,是因为jQuery的版本更新的原因,如on()方法就是1.7以后出现的。 jQuery的事件绑定api页面上,提到live()方法已经过时,不建议使用。所以这里我们主要就看下以下三个方法:bind()、...
此外,还引入了一些技巧,如deferred对象和live/delegate事件代理,以减少DOM遍历和内存占用。 总结,jQuery 1.4.2作为一个经典版本,不仅提供了丰富的功能,也奠定了现代前端开发的基础。无论你是初学者还是经验...
例如,使用`.on()`替代`.bind()`, `.delegate()`, 和`.live()`可以减少内存占用并提高性能。另外,避免全局变量的使用,以及合理地组织和合并CSS选择器,都能提升页面运行效率。 在实际应用中,jQuery广泛应用于...
此外,`bind()`、`live()`和`delegate()`在某些早期版本的jQuery中不支持动态创建元素的事件绑定,而`on()`方法解决了这个问题。 了解了这些方法的使用和区别,可以帮助开发者在处理不同情况下的事件绑定时做出更...