我未來追加的元素 是 ajax拼接的
我的on是這樣寫的
$("td").on("click","a",function(){
alert("Aha!");
});
登入後複製
這是 頁面的標籤
#
<td><a class="topic_a" href="#creat" name='${data.context }'>选择</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('click', 'td a', 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
作者最新文章
-
2023-03-15 16:54:01
-
2023-03-15 12:26:02
-
2023-03-14 18:58:01
-
2023-03-14 11:30:01
-
1970-01-01 08:00:00
-
2023-03-16 15:20:01
-
1970-01-01 08:00:00
-
1970-01-01 08:00:00
-
1970-01-01 08:00:00
-
1970-01-01 08:00:00
| |