我有一個事件:改變事件的proccess之前jQuery的檢查複選框做
$(document).on('change', '.many-checkbox', function() {
doSomething()
});
doSomething()
是有點重,所以與many-checkbox
類複選框將有一個延遲他們實際上正在檢查/取消選中之前。
我想刪除這些延遲。
那麼,我們如何在doSomething()
完成之前檢查/取消選中它?
謝謝。
我有一個事件:改變事件的proccess之前jQuery的檢查複選框做
$(document).on('change', '.many-checkbox', function() {
doSomething()
});
doSomething()
是有點重,所以與many-checkbox
類複選框將有一個延遲他們實際上正在檢查/取消選中之前。
我想刪除這些延遲。
那麼,我們如何在doSomething()
完成之前檢查/取消選中它?
謝謝。
您可以使用setTimout
函數替換函數doSomething()
函數。例如:
$(document).on('change', '.many-checkbox', function() {
setTimeout(function(){
// do something
}, 100);
});
結果JavaScript執行將暫停以使渲染線程趕上。
我懷疑這裏有各種各樣的錯誤,但是你可以先聽聽整個機構內的任何變化,然後過濾到.many-checkbox類。
直接聆聽更改複選框:
$('.many-checkbox').on('change', function() {
doSomething();
});
如果你告訴我們什麼DoSomething的是做,我們也許可以讓它異步的。
對不起,它的方式很難做到異步。正如你所說,它有很多錯誤,我的錯誤代碼〜但非常感謝你的答覆,非常感謝。 –
你可以在StackSnippet/JSFiddle中重現這個嗎?看起來問題可能在其他地方。或在'doSomething'中。 – Tushar
順便說一句,'$(this).prop('checked',$(this).prop('checked'));'沒有什麼,但增加了延遲。 – Tushar
我確定問題出在'doSomething',這就是爲什麼我想繞過它。因此,即使在doSomething完成之前,也可以使複選框被手動選中/取消選中。 –