亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

側邊欄中的 jQuery 多個表單具有相同的提交

側邊欄中的 jQuery 多個表單具有相同的提交

慕神8447489 2023-01-06 11:11:39
我有一個表,里面有一些記錄,每條記錄都可以編輯。我有一個帶有編輯表單的側邊欄,具有相同的輸入和相同的提交按鈕。當我嘗試在發送 AJAX 請求的按鈕上執行該功能時,它執行的次數與我之前打開的側邊欄的次數一樣多,而我只需要更新實際編輯的那條記錄。那是代碼:    // On Edit    $('.action-edit').on("click",function(e){        e.stopPropagation();        $(".add-new-data").addClass("show");        $(".overlay-bg").addClass("show");        const row = $(this).closest('td').parent('tr').first();        const agendaID = row.data('agenda_id');        const form = document.querySelector('#update_form');        const url = $(form).data('action_url').replace('.ID.', agendaID);        getAgendaInfo(agendaID);        $('.add-data-btn').on('click', function (e){            e.preventDefault();                       console.log(agendaID); // displays IDs of all records where sidebar was opened.             const ajaxData = grabFormData();            editAgenda(url, row, ajaxData);        })    });
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

我認為問題在于您click每次顯示新編輯器時都會添加新的事件偵聽器,但不會刪除以前的事件偵聽器。

嘗試$('.add-data-btn').off()$('.add-data-btn').on('click'....


查看完整回答
反對 回復 2023-01-06
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

.on()您遇到的問題是,無論何時評估該功能,都會創建您的點擊處理程序。問題是您執行了多次。相反,您需要執行幾個步驟以獲得優雅的解決方案:


#1

action-edit在填充元素之前找到一個存在的標簽。在最壞的情況下,body我建議你需要開始試驗


$(function() {

    $('body').on("click", '.action-edit',function(e){

        e.stopPropagation();

        $(".add-new-data").addClass("show");

        $(".overlay-bg").addClass("show");


        const row = $(this).closest('td').parent('tr').first();

        const agendaID = row.data('agenda_id');

        const form = document.querySelector('#update_form');

        const url = $(form).data('action_url').replace('.ID.', agendaID);


        getAgendaInfo(agendaID);


        $('.add-data-btn').on('click', function (e){

            e.preventDefault();

           

            console.log(agendaID); // displays IDs of all records where sidebar was opened. 


            const ajaxData = grabFormData();


            editAgenda(url, row, ajaxData);

        })


    });

});

請注意,這需要恰好運行一次,并且會自動click為您創建處理程序。


#2

找到最接近您的網格的標簽,該標簽在頁面加載時已經存在,并相應地更改選擇器。


#3

測試,測試,測試


查看完整回答
反對 回復 2023-01-06
  • 2 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號