この質問は既に返信されていますが、積極的に検索したにもかかわらずStackoverflowに関連するものは見つかりませんでした。.off()、.on()が呼び出されたときにイベントがJqueryによって延期される可能性はありますか?
私は現在、私にとって自然ないないようですが、その理由があるかもしれない私のスクリプト、行動の一つで非常に奇妙な行動に遭遇してい(私も見つけられませんでした):
実は、私のフォーム入力(選択とラジオ)を変更することによって、特定のデータ(重量、価格など)を計算するプログラムが呼び出されます。その間、最終製品をカートに追加しないでください。フォーム入力を変更すると、この送信ボタンは"disabled"
(コールバックのおかげで余分な処理が行われます)、on('click')
リスナーはoff()
で無効になります。
計算が終了すると、プログラムはコールバック関数を追加してボタンをクリックできるようになりました。
ボタンが無効(ポストoff()
)の場合、ボタンをクリックすると何もトリガーされませんが、計算が終了し、そのボタンにリスナーが追加された場合、コールバックはそのボタンは何もせずに呼び出されます。 on()
リスナーがコールバックをトリガするために戻った後にもう一度クリックする必要があるので、それは私にとって非常に奇妙であると感じていますが、おそらく私が気づいていない内部のイースターエッグまたは機能です。
function callback() {
// >>
// ...
// <<
}
function start() {
$(".button").off("click");
}
function finish() {
$(".button").on("click", callback);
}
function process() {
start();
// >>
// some inner ajax calls
// <<
finish();
}
$(".button").on("click", callback);
あなたは何が起こっているか考えていますか?
お気軽にお問い合わせください。必要な場合は、さらに詳しい情報をお尋ねください。
EDIT:https://jsfiddle.net/Cr3aHal0/nfon051x/21/
どのように私たちはあなたのコードを実行するのですか? – Rayon
Fiddleをデモするために設定できますか? (Sidenote:あなたは本当にon'ingとoff'ingする必要はありません;単にハンドラをアクティブにしておき、無効状態のボタンから来た場合はfalseを返します) – Utkanos
@Utkanos、実際は ' – Rayon