首頁 > web前端 > js教程 > jquery中live方法換on方法出現問題的解決方法詳解

jquery中live方法換on方法出現問題的解決方法詳解

黄舟
發布: 2017-06-26 09:35:21
原創
1429 人瀏覽過

我未來追加的元素 是 ajax拼接的 
我的on是這樣寫的  

$("td").on("click","a",function(){
alert("Aha!");
});
登入後複製

這是 頁面的標籤

#
<td><a class="topic_a" href="#creat"  name=&#39;${data.context }&#39;>选择</a></td>
登入後複製

ajax拼接標籤和上面標籤一模一樣的 。

但我拼接的標籤點擊沒有效果。
為什麼啊?

請確保 你用on綁定的時候 td 已經存在與dom中了..
還有..為什麼live 可以 因為live 是綁定在docuement上的..任何時候  document都是存在的..
你用的on  你的事件是綁定在td上的..如果當td不存在的時候 肯定就綁定不上了

請多了解 事件代理機制.

用delegate來替換吧

未來追加的元素中包含  麼?
包含  的話就不能在 $("td")上綁定事件代理程式。
應該在更上層的元素上綁定事件代理
例如

的父元素
實在不行在body或document上綁定也可以

$("body").on("click","a",function(){
alert("Aha!");
});
登入後複製
登入後複製

用on bind 這種。
先拼接,然後再加入到頁面上,接下裡在綁定事件。
js裡面,一樣是逐行讀取的。

綁定事件寫在前面,之後來新增的td,當然就不會有這個事件。
同時確保,td已經寫入到頁面當中。

live方法是舊版的jquery才有,on方法只能使用在頁面上已有的標籤;
想取得未來元素,只能用delegate方法了,具體寫法如下:

//div是页面已经有的元素,button是js生成的未来元素!
$("div").delegate("button","click",function(){
  $("p").slideToggle();
});
登入後複製
 $(document).on(&#39;click&#39;, &#39;td a&#39;, function() {
    alert("Aha!");
  });
登入後複製
 $("body").delegate("td","click",function(){
    alert("ok!");
  });
登入後複製

請確保 你用on綁定的時候 td 已經存在與dom中了..
還有..為什麼live 可以 因為live 是綁定在docuement上的..任何時候 document都是存在的..
你用的on  你的事件是綁定在td上的..如果當td不存在的時候 肯定就綁定不上了

請多了解 事件代理機制.

你這樣寫吧

$("body").on("click","td a.topic_a",function(){
alert("Aha!");
});
登入後複製

未來追加的元素中包含 

 麼?
包含 
 的話就不能在 $("td")上綁定事件代理程式。
應該在更上層的元素上綁定事件代理
例如或
的父元素
實在不行在body或document上綁定也可以

$("body").on("click","a",function(){
alert("Aha!");
});
登入後複製
登入後複製

以上是jquery中live方法換on方法出現問題的解決方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
引入jQuery 文件
來自於 1970-01-01 08:00:00
0
0
0
jquery筆記哪裡有下?
來自於 1970-01-01 08:00:00
0
0
0
javascript - vue+webpack怎麼引入jquery
來自於 1970-01-01 08:00:00
0
0
0
php+jquery的問題
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板