複数回の登録イベントにより、1つのイベントが複数回トリガーされます.
880 ワード
JavaScriptロジックでは、ボタンのclickイベントに関数が自動的にバインドされますが、このコードはイベントを繰り返し登録します.このようにonNext関数に依存すると,ボタンを1回クリックしたときに複数回トリガーされる.
これはJQuery内部が何度もバインドされているかどうかを判断しておらず,内部が配列でイベント関数を保存しているのではないかと疑い,また重さを落とさなかったためである.
次のコードはこの問題を予防した.ソリューションは簡単です.
これからJQueryを使うときはこの特性に気をつけてください.
jQueryはまた、jQuery 1でイベント処理関数を検索するための内部的な方法を提供する.8+バージョンで有効です.
次のコードはclickイベントの処理関数をチェックしますが、2未満の場合は登録されていないことを説明し、安心して追加できます.
これはJQuery内部が何度もバインドされているかどうかを判断しておらず,内部が配列でイベント関数を保存しているのではないかと疑い,また重さを落とさなかったためである.
次のコードはこの問題を予防した.ソリューションは簡単です.
if (!this.hasPageBarEvents) {
$(".pNext").on("click", this, this.onNext);
this.hasPageBarEvents = true;
}
これからJQueryを使うときはこの特性に気をつけてください.
jQueryはまた、jQuery 1でイベント処理関数を検索するための内部的な方法を提供する.8+バージョンで有効です.
次のコードはclickイベントの処理関数をチェックしますが、2未満の場合は登録されていないことを説明し、安心して追加できます.
bindClick: function(jqueryObject, self, handler) {
var r = $._data(jqueryObject.get(0), "events");
if (r.click.length < 2) {
jqueryObject.on("click", self, handler);
}
},
clickには常に要素があり、その後も異なるブラウザでの動作を観察し続けます.Chromeでは問題ありません.