javascript - jQuery給動態添加的元素繫結事件的問題? - SegmentFault

來源:互聯網
上載者:User
關鍵字 javascript jquery php

中的代碼塊是描述有一個事件,觸發之後在對應id="tb1"的標籤後面產生html
在網頁中的代碼是這樣的,如

標為2的是之前就有的,3是通過上面的事件添加上去的,那麼問題來了;有個name=“plan_bt[]”的屬性,這個屬性綁定了一個事件,代碼如

為什麼添加後的html代碼,不執行這個事件呢,點擊選擇按鈕沒有反應?剛開始是放在ready下的,應如何修改?

回複內容:

中的代碼塊是描述有一個事件,觸發之後在對應id="tb1"的標籤後面產生html
在網頁中的代碼是這樣的,如

標為2的是之前就有的,3是通過上面的事件添加上去的,那麼問題來了;有個name=“plan_bt[]”的屬性,這個屬性綁定了一個事件,代碼如

為什麼添加後的html代碼,不執行這個事件呢,點擊選擇按鈕沒有反應?剛開始是放在ready下的,應如何修改?

  • 4 天前提問
  • 評論
  • 邀請回答

請先 登入 後評論

預設排序 時間排序

6 個回答

答案對人有協助,有參考價值 7 答案沒協助,是錯誤的答案,答非所問

採納

綁定事情的時候,如果你這個 DOM 還沒產生,那就不會綁定上也就是說

綁定事件只對綁定當時已經存在的DOM進行了綁定

如果需要對以後添加的 DOM 進行綁定,可以採用委託方式,背後原理是事件冒泡機制,用 jQuery 大概是這樣實現

// 找到父物件,這裡假設是 form$("form:first").on("click", "name='plan_bt[]'", function(e) {    var targets = $(e.target);    // ...});

name=“plan_bt[]” 是頁面載入完成後才有的,所以之前對這個選取器的任何操作都會失效,因為找不到這個元素啊。

可以使用 on 進行事件委託式的綁定。

$(document).on('click', 'name=“plan_bt[]”', function(){    // your code});

其原理是把事件綁定到了一個已存在的父級元素上(不一定非要 document),觸發參數1 click事件後通過 event 對象找到真正的觸發者,如果這個觸發者與參數2 name=“plan_bt[]”一致,就執行參數3 function(){}

建議題主搜尋 事件冒泡 學習一下,另外jQuery最佳實務也可以看一下。

使用each和on就行了

樓主可以試試jquery的livequery外掛程式。

可以考慮使用live或delegate

事件委託原理

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.