div内に多数のチェックボックスがあり、リセットしたい。それらのすべては変化の同じイベントを持っています。リセットボタンをクリックすると、現在のプロパティとdata-defaultが比較され、異なる場合はプロパティがこの値に設定され、変更イベントがトリガされます。要素/ノードリストの変更が遅すぎる
データデフォルトは、ページロード時に設定されたチェックボックスのチェック状態またはセクションがajaxによって保存されたときの状態です。
var $checkboxes = $section.find(":checkbox");
for (var i = 0; i < $checkboxes.length; i++) {
var $cb = $($checkboxes[i]);
var currentValue = $cb.prop("checked");
var defaultValue = $cb.data("default");
if (currentValue !== defaultValue) {
$cb.prop("checked", defaultValue)
.trigger("change");
}
}
ここでの問題はパフォーマンスです。 70のチェックボックスに対してjqueryを使って変更イベントをトリガするには約1秒かかります。また、1000個のチェックボックスがリセットされると、ブラウザがクラッシュしない場合は約5分かかります。
オブジェクトの配列のonchangeイベントを発生させる良い方法はありますか?おそらく、vanilla javascriptを使用しますか?
リセットボタンをクリックすると、あなたは、チェックボックスはすべての権利チェックすることにしたいですか? –
@JuOliveira値をdava-valueプロパティにリセットしてから、値が変更されたイベントの変更イベントをトリガーします。 –