久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

直接用click不能為動(dòng)態(tài)元素綁定click事件,?

 程序猿之家 2015-11-16
 本帖最后由 wuxiaolan91 于 2012-6-4 11:04 編輯



1.出現(xiàn)問題:   
  我們一般都是為已經(jīng)存在的元素去綁定事件,,那么用同樣的綁定方法也能正確綁定動(dòng)態(tài)創(chuàng)建的元素嗎?

  我在我們孔明app的項(xiàng)目里動(dòng)態(tài)創(chuàng)建了一個(gè)元素,,然后我又需要為這個(gè)元素綁定事件,,要點(diǎn)擊這個(gè)動(dòng)態(tài)創(chuàng)建的元素的時(shí)候能夠在這個(gè)元素的右側(cè)復(fù)制這個(gè)元素出來
  1. $("動(dòng)態(tài)創(chuàng)建的元素").click(function(){
  2. console.log("事件已被綁定");
  3. ....
  4. }
復(fù)制代碼
??墒俏矣脜s沒有半點(diǎn)反應(yīng),作為測(cè)試用的console語句的話不就是沒出來過,,后來經(jīng)同事提點(diǎn):你這個(gè)(綁定事件的)元素是不是動(dòng)態(tài)創(chuàng)建的?


我就奇怪了,,動(dòng)態(tài)創(chuàng)建的元素用click事件綁定就不行了嗎,?

2.問題分析:
我換了on來綁定事件,結(jié)果還是不行(后來發(fā)現(xiàn)不是不行,,而是on綁定這種動(dòng)態(tài)元素得綁定在這個(gè)動(dòng)態(tài)元素的父元素或者祖父元素上,,再把這個(gè)動(dòng)態(tài)元素作為參數(shù)傳進(jìn)去),on事件不行了,,又開始試live這個(gè)綁定事件,,ok,,在live這里,綁定成功,,測(cè)試的console語句出來了,,看看api,特別有指出,,原來live是可以為現(xiàn)在還未創(chuàng)建的動(dòng)態(tài)元素綁定事件的,,而bind事件則只能綁定已經(jīng)存在的元素。
好吧,,不多說了上Code吧。
  1. <!doctype html>
  2. <html>
  3.         <head>
  4.                 <title>測(cè)試怎么綁定動(dòng)態(tài)元素的詳細(xì)情況</title>
  5.                 <body>
  6.                         
  7.                         <div id="container">
  8.                                 <button id="addSpan">添加元素</button>
  9.                                 
  10.                         </div>
  11.                         <p id="disc">提示語句</p>
  12.                         <script type="text/javascript" src="http://code./jquery-1.7.2.min.js"></script>
  13.                         <script type="text/javascript">
  14.                                 
  15.                                 $("#addSpan").click(function(){
  16.                                         $("#container").append($("<button id='clickAddEle'>click事件</button>"));
  17.                                         $("#container").append($("<button id='bindAddEle'>bind</button>"));
  18.                                         $("#container").append($("<button id='liveAddEle'>live</button>"));
  19.                                         $("#container").append($("<button id='onAddEle'>on</button>"));
  20.                                         $("#container").append($("<button id='delegateAddEle'>delegate</button>"));
  21.                                 });
  22.                                 //用click方法綁定
  23.                                 
  24.                                 $("#clickAddEle").click(function(){
  25.                                 var tiscContent = "click為動(dòng)態(tài)元素綁定事件成功1";
  26.                                         $("#disc").html(tiscContent);
  27.                                 });
  28.                                 $("#bindAddEle").bind("bind",function(){
  29.                                 var tiscContent = "bind為動(dòng)態(tài)元素綁定事件成功1";
  30.                                         $("#disc").html(tiscContent);
  31.                                 });
  32.                                 $("#liveAddEle").live("click",function(event){
  33.                                         var tiscContent = "live為動(dòng)態(tài)元素綁定事件成功1";
  34.                                         $("#disc").html(tiscContent);
  35.                                 });
  36.                                 /*
  37.                                 $("#liveAddEle").on("click",function(event){
  38.                                         var tiscContent = "on為動(dòng)態(tài)元素綁定事件成功1";
  39.                                         $("#disc").html(tiscContent);
  40.                                 });
  41.                                 */
  42.                                 $("#container").on("click","#onAddEle",function(event){
  43.                                         var tiscContent = "on為動(dòng)態(tài)元素綁定事件成功1";
  44.                                         $("#disc").html(tiscContent);
  45.                                 });
  46.                                 $("#container").delegate("#delegateAddEle","click",function(event){
  47.                                         var tiscContent = "delegate為動(dòng)態(tài)元素綁定事件成功1";
  48.                                         $("#disc").html(tiscContent);
  49.                                 });
  50.                                 
  51.                                 
  52.                         </script>
  53.                 </body>
  54.         </head>
  55. </html>
復(fù)制代碼
這里的demo你點(diǎn)擊"添加元素"按鈕后,,會(huì)動(dòng)態(tài)創(chuàng)建幾個(gè)按鈕,,不同的按鈕對(duì)應(yīng)不同的方法,如果你點(diǎn)擊了那個(gè)按鈕后,,下面的描述文字有更新就說明你的這個(gè)按鈕所代表的綁定事件的方法是游泳的,。
注意,on方法是jQuery1.7才添加進(jìn)去的方法,,所以如果你的jQuery版本低于這個(gè),,那么on方法就會(huì)不起作用。

3.問題總結(jié):
為動(dòng)態(tài)元素綁定事件的話,,用click(),,bind(),直接為這個(gè)元素綁定on()都不行,,要用live()或者delegate()得給這個(gè)元素的上級(jí)元素綁定on方法,,把這個(gè)元素作為參數(shù)傳進(jìn)去才行。





    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多