來源:互聯網
上載者:User
關鍵字
javascript
php
css
html
html5
剛剛可能沒說清楚,我重新描述一下:
開始是a1
$('.a').bind('click',function(){
//調用jquery複製一份a標籤,做一些其他修改
});
然後變成這樣
a1`a2
問題:為什麼點擊a1可以調用上面那段jquery,而a2就不可以了? 1-3樓的方法我都試過了,還是沒用.
回複內容:
剛剛可能沒說清楚,我重新描述一下:
開始是a1
$('.a').bind('click',function(){
//調用jquery複製一份a標籤,做一些其他修改
});
然後變成這樣
a1`a2
問題:為什麼點擊a1可以調用上面那段jquery,而a2就不可以了? 1-3樓的方法我都試過了,還是沒用.
$('.a').on('click',function(e){ alert(1) })
樓主可以試下這個,官方推薦用on
那個是因為動態添加元素吧,建議樓主去看下對於動態添加元素如何綁定事件的。
大概代碼是這個樣子的
$('div').on('click','.a',function(){})
為什麼不能用?
因為你綁定的元素在頁面文檔結構產生後就已經綁定了,但是通過動態產生的dom結構是沒法用先前的click方法的,因此你需要重新綁定或者是動態綁定,
$('div').delegate('a', 'click' ,function(){ //To do})
當然了,如果還是不行,那麼你可以考慮吧上面這個事件封裝成一個方法,然後再//To do裡面遞迴調用~
哦,綁定的時候執行個體還不存在自然綁定不上了。以前有個live方法可以解決你這個問題,現在好像改成別的方式(名字)了,查一下手冊唄。
都可以啊啊啊
如果是動態添加的話,我感覺這樣就可以了$(document).on('click','.a',function(){...});
那是你複製的問題吧,樓主可以看下clone()方法,傳入參數true,會把元素上綁定的方法一起複製的。或者就用上面提到的代理的方法
如果模組化批量方法,extend更好;
$(function(){ $.fn.extend{ simple:function(){ var root=$(this); root.click(function(){ alert($(this)); }) } } $('.a').simple();})
$('body').click(function(e){ var tar = e.target; if($(tar).hasClass('a')){ xxxxx }});
這樣就OK了!
1樓沒答到點上,確實是動態追加dom的問題,所以需要通過委託父節點監聽來解決,最簡單的是委託文檔節點,畢竟所有的dom都是追加在文檔節點的後代中:$(document).on('click','.a',function(){...})
動態添加的dom 監聽其父元素,例如