jQuery v 1.7.1
クロム v 18.0.1025.162
ドロップダウン メニューに jquery クリック イベント ハンドラを追加しました。FF/Safari では、クリックの直後にイベント ハンドラーが起動しますが、Chrome では奇妙な動作が見られます。
- ドロップダウンメニュー内をクリック
- イベント ハンドラーが起動していないことに注意してください (一方、FF/Safari では発生します)。
- ドロップダウン メニューにまだフォーカスがあるときに、コンピューター上の別のアプリケーションにタブで移動する
- タブで Chrome に戻る
- イベント ハンドラが起動したことに注意してください
あるいは、
- ドロップダウンメニュー内をクリック
- イベント ハンドラが起動していないことに注意してください
- ページの別の部分をクリックして、ドロップダウンがフォーカスを失うようにします
- イベント ハンドラが起動していないことに注意してください
- コンピューター上の別のアプリケーションに移動
- タブで Chrome に戻る
- イベント ハンドラが起動していないことに注意してください
$("#dropdown-id").detectRealTimeChange(function(){ $("#some-div").html("html コンテンツ"); ); /** * 入力のフォーカスを失うことなく、入力の変更を検出する */ jQuery.fn.detectRealTimeChange = 関数 (コールバック){ var oldValue = $(this).val(); var didRecordChange = false; $(this).keyup(関数(){ var newValue = $(this).val(); if(oldValue != newValue){ if(!didRecordChange){ changeCount = changeCount + 1; didRecordChange = true; } } そうしないと{ if(didRecordChange){ changeCount = changeCount - 1; didRecordChange = false; } } if(コールバックの種類 == '関数'){ callback.call(これ); } }); $(this).click(関数(){ var newValue = $(this).val(); if(oldValue != newValue){ if(!didRecordChange){ changeCount = changeCount + 1; didRecordChange = true; } } そうしないと{ if(didRecordChange){ changeCount = changeCount - 1; didRecordChange = false; } } if(コールバックの種類 == '関数'){ callback.call(これ); } });