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

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

為什么我們需要jQuery點擊事件在回調中

為什么我們需要jQuery點擊事件在回調中

海綿寶寶撒 2022-09-02 21:23:25
嗨,我正在使用jquery回調函數來檢查復選框的狀態。我正在使用以下代碼,但我不明白為什么我們需要在回調中再次使用單擊事件。包含代碼后,它工作正常。誰能告訴我這個機制與插圖真的有幫助。提前致謝。 function notify() {       if (jQuery('input[type=checkbox]').is(':checked')) {           ...       } else {        ....       }          jQuery("#dummy").on("click", notify); // Why i need this to do it again          //Is it will work like recursive function     }  jQuery(document).ready(function(){        jQuery("#dummy").on("click",notify); //This is my callback   });
查看完整描述

2 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

生產線

jQuery("#dummy").on("click", notify);

真的不應該在回調中。順便說一句,它不會單擊按鈕,而是注冊另一個“單擊”偵聽器。而且每次單擊時,不僅只有一個,而且還有一個額外的偵聽器。

第一次單擊,調用一個偵聽器并調用“notify”。這增加了第二個。

第二次單擊時,調用兩個 listner,兩個都添加另一個,總共最多 4 個。接下來單擊它是 8,然后是 16,...點擊幾下后,您的系統應該會變慢。

因此,在 notify 方法中刪除該方法。


查看完整回答
反對 回復 2022-09-02
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

為什么我們需要在回調內部使用jQuery點擊事件

當且僅當您刪除的位替換為一些新的HTML時,您才會(可以)執行此操作。...#dummy

然后,原始的單擊事件將被刪除(因為它引用的元素將不再存在) - 因此您需要為新的HTML添加事件處理程序。

使用事件委派可以更好地處理此方案。


另一種方法是,如果您更改為確保一次只單擊一次(例如,如果單擊事件處理程序執行一些ajax,并且您不希望用戶在保存現有數據時再次單擊它(例如))。.on.one

然后,在處理完成后重新添加 .one 事件。

鑒于提供的(有限的)代碼,這似乎不是您的問題中的場景(因為沒有ajax可以“等待”)。如果按鈕上有視覺更新(例如灰顯),也會更好。


查看完整回答
反對 回復 2022-09-02
  • 2 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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