0

次のリスナーのいずれかがアクティブ化された場合、それらは2 ^ x回アクティブ化されます。xは、それらのいずれかがトリガーされた回数です。初めてそれが2回実行されるとき、10 4、8、16ect。それらを複数回トリガーしている私が見逃しているものは何ですか?

$(document).on('click',"#post-ride",(function() {
  addRide(currentDriver, $(destinationInput).val(), $(originInput).val(),$(dateInput).val(), $(timeInput).val());
  console.log("add ride called");
$.getScript("scripts/myRides.js", function() {
});
}));

$(document).on('click',"#request-ride",(function() {
  requestRide(currentDriver, $(destinationInput).val(), $(originInput).val(),            $(dateInput).val(), $(timeInput).val());
$.getScript("scripts/myRides.js", function() {   
});
}));

$(document).on('click',"#leave-ride",(function() {
leaveRide(currentDriver, $(this).closest('div').attr('id') );
$.getScript("scripts/myRides.js", function() {
});
console.log("leave ride called");
}));

$(document).on('click',"#cancel-ride",(function() {
cancelRide(currentDriver, $(this).closest('div').attr('id') );
$.getScript("scripts/myRides.js", function() {
});
}));

$(document).on('click',"#remove-friend",(function() {
removeFriend(currentDriver, $(this).closest('div').attr('id') );
$.getScript("scripts/friends.js", function() {
});
}));

$(document).on('click',"#add-friend",(function() {
addFriend(currentDriver, $(this).closest('div').attr('id') );
$.getScript("scripts/friends.js", function() {
});
}));
4

2 に答える 2

1

おそらく、どちらmyRides.jsfriends.jsまたは両方が、ロードするたびに重複するイベントリスナーを追加しています。

論理的な質問は、なぜ同じスクリプトを何度もロードするのかということです。あなたはおそらくそれをするべきではありません。

そのスクリプトに実行したい関数が1つある場合は、その関数がすでにロードされているかどうかをテストできます。ロードされている場合は、それを呼び出すだけです。そうでない場合は、スクリプトをロードし、ロード時に実行させます。

同じスクリプトを何度もロードする他の理由がある場合は、各イベントリスナーを独自の状態変数にロードしたかどうかを追跡することで、後続のコピーをインストールしないように各イベントリスナーを保護できます。おそらく問題を解決するためのより退屈な方法です。

于 2012-12-04T00:07:31.203 に答える
0

「getScript」を実行するたびに新しいハンドラーを追加します

于 2012-12-04T00:05:20.663 に答える