1

jQuery v 1.7.1

クロム v 18.0.1025.162

ドロップダウン メニューに jquery クリック イベント ハンドラを追加しました。FF/Safari では、クリックの直後にイベント ハンドラーが起動しますが、Chrome では奇妙な動作が見られます。

  1. ドロップダウンメニュー内をクリック
  2. イベント ハンドラーが起動していないことに注意してください (一方、FF/Safari では発生します)。
  3. ドロップダウン メニューにまだフォーカスがあるときに、コンピューター上の別のアプリケーションにタブで移動する
  4. タブで Chrome に戻る
  5. イベント ハンドラが起動したことに注意してください

あるいは、

  1. ドロップダウンメニュー内をクリック
  2. イベント ハンドラが起動していないことに注意してください
  3. ページの別の部分をクリックして、ドロップダウンがフォーカスを失うようにします
  4. イベント ハンドラが起動していないことに注意してください
  5. コンピューター上の別のアプリケーションに移動
  6. タブで Chrome に戻る
  7. イベント ハンドラが起動していないことに注意してください
    $("#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(これ);
            }
        });
    
4

0 に答える 0