javascript - jquery能為多個class相同的div綁定同一個事件嗎 ?

來源:互聯網
上載者: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 監聽其父元素,例如

    
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.