jQuery實(shí)現(xiàn)為動(dòng)態(tài)添加的元素綁定事件實(shí)例分析
本文實(shí)例講述了jQuery實(shí)現(xiàn)為動(dòng)態(tài)添加的元素綁定事件。分享給大家供大家參考,具體如下:
在使用jquery的方式為元素綁定事件時(shí),我經(jīng)常使用bind或者click,但這只能為頁面已經(jīng)加載好的元素綁定事件。像需要用ajax的方式請(qǐng)求遠(yuǎn)程數(shù)據(jù)來動(dòng)態(tài)添加頁面元素時(shí),顯然以上幾種綁定事件的方式是無效的,具體寫法如下。
$(selector).bind(event,data,function)
$(selector).click(function)
$("#searchMoveVideoResult ul li").bind("click",function(){
$(this).css("border","5px solid #000");
});
$("#searchMoveVideoResult ul li").click(function(){
$(this).css("border","5px solid #000");
});
為動(dòng)態(tài)添加的元素綁定事件有以下幾種方式:
1. delegate():向匹配元素的當(dāng)前或未來的子元素附加一個(gè)或多個(gè)事件處理器
$(selector).delegate(childSelector,event,data,function)
目前大多數(shù)jquery版本都可用,不過我一般不用它。
$("#searchMoveVideoResult").delegate("ul li","click",function(){
$(this).css("border","5px solid #000");
});
$("#searchMoveVideoResult").delegate("click","ul li",function(){
$(this).css("border","5px solid #000");
});
看出它們的不同了嗎,第二種寫法是錯(cuò)誤的,記住一定要把事件寫在元素的后面。
2. live():為當(dāng)前或未來的匹配元素添加一個(gè)或多個(gè)事件處理器
$(selector).live(event,data,function)
jquery1.8版本以前推薦使用該方法;jquery1.8版本之后就不建議使用了,我試了下,也是無效的,所以高版本的jquery推薦使用on()方法綁定事件。
$("#searchMoveVideoResult ul li").live("click",function(){
$(this).css("border","5px solid #000");
});
3. on():適用于當(dāng)前及未來的元素(比如由腳本創(chuàng)建的新元素)
$(selector).on(event,childSelector,data,function,map)
試驗(yàn)了下,大多數(shù)版本的jquery都是支持這個(gè)方法的,也是我比較喜歡使用的方法。
$("#searchMoveVideoResult").on("click","ul li",function(){
$(this).css("border","5px solid #000");
});
//下面這樣寫就是錯(cuò)的了,一定要把動(dòng)態(tài)添加的元素放到on()方法里面才行。
$("#searchMoveVideoResult ul li").on("click",function(){
$(this).css("border","5px solid #000");
});
4.onclick事件:動(dòng)態(tài)添加數(shù)據(jù)時(shí),就為元素綁定onclick事件
function searchMoveVideo(){
$.ajax({
type:"POST",
url:"http://op.juhe.cn/onebox/movie/video",
data:{"q":$("#moveVideo").val(),"key":"346f79df993776748b242236464d565d"},
dataType:"JSONP",
success:function(data){
console.log(data);
if(data.error_code=="0"){
var result=data.result;
console.log(result);
var html=result.title+"<br>"+result.tag+"<br>"+result.act+"<br>"+result.year+"<br>" +result.area+"<br>"+result.dir+"<br>"+result.desc;
html+="<br><img src='"+result.cover+"'/><br>";
html+='<ul style="list-style: none; float: left;">';
var act_s=result.act_s;
for(var i=0;i<act_s.length;i++){
html+='<li style="float: left;" <span style="color:#cc0000;">onclick="showSource(this);"</span>><a target="_bla nk"><img src="'+act_s[i].image+'"><br>'+act_s[i].name+'</a></li>';
}
html+='</ul>'
$("#searchMoveVideoResult").html(html);
}else{
$("#searchMoveVideoResult").html(data.reason);
}
}
});
}
更多關(guān)于jQuery相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《jQuery常見事件用法與技巧總結(jié)》、《jQuery常用插件及用法總結(jié)》、《jQuery操作json數(shù)據(jù)技巧匯總》、《jQuery擴(kuò)展技巧總結(jié)》、《jQuery常見經(jīng)典特效匯總》及《jquery選擇器用法總結(jié)》
希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。
- JQuery事件委托(適用于給動(dòng)態(tài)生成的腳本元素添加事件)
- Jquery 動(dòng)態(tài)添加元素并添加點(diǎn)擊事件實(shí)現(xiàn)過程解析
- jQuery動(dòng)態(tài)添加元素?zé)o法觸發(fā)綁定事件的解決方法分析
- jQuery如何獲取動(dòng)態(tài)添加的元素
- jQuery給動(dòng)態(tài)添加的元素綁定事件的方法
- Jquery對(duì)新插入的節(jié)點(diǎn) 綁定Click事件失效的解決方法
- jquery動(dòng)態(tài)添加元素事件失效問題解決方法
- jQuery動(dòng)態(tài)添加元素后元素注冊(cè)事件失效解決
相關(guān)文章
基于Bootstrap+jQuery.validate實(shí)現(xiàn)Form表單驗(yàn)證
這篇文章主要介紹了基于Bootstrap+jQuery.validate實(shí)現(xiàn)Form表單驗(yàn)證,需要的朋友可以參考下2014-12-12
基于jQuery實(shí)現(xiàn)咖啡訂單管理簡(jiǎn)單應(yīng)用
這篇文章主要為大家詳細(xì)介紹了基于jQuery實(shí)現(xiàn)咖啡訂單管理的簡(jiǎn)單應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
jQuery調(diào)用WebMethod(PageMethod) NET2.0的方法
這篇文章主要介紹了jQuery調(diào)用WebMethod(PageMethod) NET2.0的方法,結(jié)合實(shí)例形式分析了jQuery基于ajax調(diào)用.NET方法的相關(guān)技巧,需要的朋友可以參考下2016-04-04
jQuery Validation Plugin驗(yàn)證插件手動(dòng)驗(yàn)證
jquery.validate是jquery旗下的一個(gè)驗(yàn)證框架,借助jquery的優(yōu)勢(shì),我們可以迅速驗(yàn)證一些常見的輸入,并且可以自己擴(kuò)充自己的驗(yàn)證方法,并且對(duì)國(guó)際化也有很好的支持,接下來通過本文給大家介紹jQuery Validation Plugin驗(yàn)證插件手動(dòng)驗(yàn)證2016-01-01
jquery和雅虎的yql服務(wù)實(shí)現(xiàn)天氣預(yù)報(bào)服務(wù)示例

