jQuery獲取動(dòng)態(tài)添加元素的方法詳解
jQuery獲取動(dòng)態(tài)添加的元素
使用 on()方法
本質(zhì)上使用了事件委派,將事件委派在父元素身上
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品,但是由于on()方法必須有事件,沒(méi)有事件時(shí)可選擇delegate();
下例為選項(xiàng)卡:
父元素: .main .left
子元素: li
$("父元素").on("click","子元素",function(){
var index=$(this).index();
$(".main .right").find('li').css({"background":"#F4F4F4","color":"#333"});
$(this).css({"background":"#fff","color":"#46c6ff"});
$(".main .left").find('li').hide();
$(".main .left").find('li').eq(index).show();
});on()可以獲取動(dòng)態(tài)元素,必須有事件
- delegate() 可以獲取動(dòng)態(tài)元素,可以沒(méi)事件
- live() 可以獲取動(dòng)態(tài)元素,jQuery 1.9已棄用,必須有事件
- bind() 只能獲取靜態(tài)元素,不能獲取動(dòng)態(tài)元素,必須有事件
問(wèn)題描述
用jQuery的append()方法動(dòng)態(tài)添加了一段html代碼之后,發(fā)現(xiàn)在為新添加的元素綁定click事件時(shí)無(wú)法獲取該新元素。
解決方法
度娘推薦的方法基本是用live()方法
live() 方法為被選元素附加一個(gè)或多個(gè)事件處理程序,并規(guī)定當(dāng)這些事件發(fā)生時(shí)運(yùn)行的函數(shù)。
通過(guò) live() 方法附加的事件處理程序適用于匹配選擇器的當(dāng)前及未來(lái)的元素(比如由腳本創(chuàng)建的新元素)。
live()的詳細(xì)使用方法可以查看jQuery live()
live()和bind()的區(qū)別就是live不僅可以給頁(yè)面中現(xiàn)有的元素綁定事件,還可以給將來(lái)動(dòng)態(tài)添加進(jìn)來(lái)的元素綁定事件。
于是我用live()替換了bind(),但報(bào)出了新錯(cuò)誤:TypeError: $(…).live is not a function
經(jīng)過(guò)查詢以后發(fā)現(xiàn),原來(lái)是jQuery 1.9及其以上已經(jīng)無(wú)法使用live(),可以用on()方法代替live().
on()的官方定義和用法:
on() 方法在被選元素及子元素上添加一個(gè)或多個(gè)事件處理程序。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。
注意:使用 on() 方法添加的事件處理程序適用于當(dāng)前及未來(lái)的元素(比如由腳本創(chuàng)建的新元素)。

on()的詳細(xì)使用方法可以查看jQuery on()
代碼演示 html頁(yè)面:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery on()方法測(cè)試</title> </head> <body> <button id="click1">Click me!</button> <p>Hello,</p> <script src="js/jquery.min.js"></script> <script src="js/test.js"></script> </body> </html>
test.js:
$().ready(function(){
$("#click1").bind("click",function(){
$("p").append("<div class='new'><b>I'm clicked!</b></div>");
});
//on方法要先找到原選擇器(p),再找到動(dòng)態(tài)添加的選擇器(.new)
$("p").on("click",".new",function(){
$(this).remove();
});
});test.js中第6行實(shí)現(xiàn)了為動(dòng)態(tài)添加的.new元素綁定click事件。應(yīng)注意的是,雖然是為.new綁定事件,但on()方法卻是綁定在原選擇器
上的,然后將.new放在了參數(shù)列表中,原理參照上文on()的官方定義和用法。
到此這篇關(guān)于jQuery獲取動(dòng)態(tài)添加元素的方法詳解的文章就介紹到這了,更多相關(guān)jQuery獲取動(dòng)態(tài)元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析LigerUi開(kāi)發(fā)中謹(jǐn)慎載入common.css文件
這一句是載頁(yè)面載入時(shí),顯示正在載入動(dòng)畫(huà)效果,但是極大影響了程序開(kāi)發(fā)里的調(diào)試。給新手的建議,希望可以參考下2013-07-07
Jquery $.getJSON 在IE下的緩存問(wèn)題解決方法
$.getJSON 的url都是相同的 問(wèn)題來(lái)了 我修改 或者 新增樹(shù)節(jié)點(diǎn) 然后刷新tree IE竟然毫無(wú)變化 在其他瀏覽器上面都OK,于是搜到一個(gè)可行的解決方法2014-10-10
jquery ajax 檢測(cè)用戶注冊(cè)時(shí)用戶名是否存在
當(dāng)用戶注冊(cè)需要知道這個(gè)用戶名是否被人使用所以需要在用戶登陸前判斷為了使用戶得到更好的體驗(yàn),我們使用了jquery的ajax效果,來(lái)用戶名是否存在。2009-11-11
精心挑選的15款優(yōu)秀jQuery 本特效插件和教程
今天這篇文章向大家分享15款精心挑選的優(yōu)秀 jQuery 文本特效插件,都帶有詳細(xì)的使用教程。jQuery 是最流行和使用最廣泛的 JavaScript 框架,它簡(jiǎn)化了 HTML 文檔遍歷,事件處理,動(dòng)畫(huà)以及Ajax交互,幫助 Web 開(kāi)發(fā)人員更快速的實(shí)現(xiàn)各種精美的界面效果2012-08-08
jQuery實(shí)現(xiàn)獲取選中復(fù)選框的值實(shí)例詳解
這篇文章主要介紹了jQuery實(shí)現(xiàn)獲取選中復(fù)選框的值,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
jquery isEmptyObject判斷是否為空對(duì)象的函數(shù)
jQuery 判斷一個(gè)對(duì)象是否為空是使用for name in obj 來(lái)遍歷對(duì)象中的屬性名.2011-02-02
jquery實(shí)現(xiàn)手機(jī)發(fā)送驗(yàn)證碼的倒計(jì)時(shí)代碼
這篇文章主要介紹了jquery實(shí)現(xiàn)手機(jī)發(fā)送驗(yàn)證碼的倒計(jì)時(shí)代碼,需要的朋友可以參考下2014-02-02

