Firefox ではなく、Chrome で次の動作が発生することがわかりました。
入力要素があります。
- 「変更」イベントハンドラを持っています
- ユーザーがバックスペースを入力し、要素のコンテンツが何もない場合、その要素が削除される「keydown」イベントハンドラーがあります。
- これらの 2 つのハンドラーはラッパー要素にバインドされ、イベント ハンドラーは委任されたハンドラーとして jQuery.on 関数を使用してアタッチされます。
Chrome では、もし私が
1) 入力ボックスをクリックし、入力ボックスにテキストを入力して、フォーカスを外します。
- change イベントハンドラが呼び出されます。
2) 入力ボックスをクリックし、バックスペースを入力してすべての内容を削除し、もう一度入力してその入力ボックスを削除します。
- 次に、ターゲットの入力 dom が削除されても、変更イベント ハンドラーは引き続き呼び出されます。
Firefox では、バックスペース キーダウンによりボックスが削除された場合、変更イベント ハンドラーが呼び出されません。
私のブラウザだけですか?またはjQueryのバグ?またはブラウザの実装バグ??
私はjsfiddleで簡略化されたコードを書きました.. http://jsfiddle.net/RbAua/6/