2009-07-25 14 views
0

この問題は、クロムでもうまくいきません。クロム!!
とにかく、私は3つの選択ボックス、A、B、Cを持っています。ページの読み込みでは、BとCは隠されています。 (これはすべてのブラウザで問題ありません)。現時点では、ボックスAの特定の値にイベントハンドラが付いているので、値をクリックすると、BはAに従って結果が表示されます。Bの値をクリックするとCが表示されます。
しかし、この「ショー」効果はFirefoxでのみ発生します.ChromeとIEは混乱します。jQueryエフェクトはFirefoxで動作します。クロムではない/ ie

提案がありますか?ヒント? はここにいくつかのコードです:

$(document).ready(function() { 
    $("#B").hide(); 
    $("#C").hide(); 
    $('select#A option').each(function() { 
     $(this).click(function() { 
       $.getJSON(stuff, callback(data)); 
      }); 

    }); 

}); 
function callback(data) { 
    // alert("hi"); // This isn't working for Chrome/IE! so the callback isn't called 
    $("#B").show(); // This isn't working for Chrome/IE! 
}; 

EDIT:それは「を選択#オプション」、判明 - 「オプション」タグは、バグのあるものでした。私のハンドラを "変更"に変更した後、オプションタグを削除するまでデバッグしてデバッグすることができました。

おかげで、
マイケル

+1

ajaxクエリはサーバーに到着しますか? callback()の開始時にalert()を呼び出すでしょうか? $( "#B")の後に表示されます。 – Javier

+0

それはしません(Chrome/IEの場合) – Dirk

+0

あなたのコードのどこかに迷惑メールのような問題があります。 /、\ s * [\] \}]/ –

答えて

4

実際の問題は、次の行にあります。

//... 
$.getJSON(stuff, callback(data)); 
//... 

あなたが実際に機能を実行すると、それは何も返さないので、undefinedを渡している、コールバック関数を渡していません。

あなたは、関数の参照のみ渡す必要があります。私はそのクリックハンドラについて気づいていない:

//... 
$.getJSON(stuff, callback); 
//... 

や場所で無名関数を使用します。

//... 
$.getJSON(stuff, function(data){ 
    $("#B").show(); 
}); 
//... 

に編集を割り当てようとしている場合は、changeイベントをselect要素で使用して、オプションが選択されていることを確認することをおすすめします。

$(document).ready(function() { 
    $("#B,#C").hide(); 

    $('select#A').change(function() { 
    $.getJSON(stuff, function(data) { $("#B").show();}); 
    }); 
}); 
+0

+1のコールバックは表示されませんでしたが、$ .getJSONを呼び出さなくてもクリックがまだIEやChromeで選択されていないようです – ak3nat0n

2

は、私はあなたがコールバック関数の最後に余分な終了かっこがあるかもしれないと思います。

UPDATE:

Firefoxはオプションではなく、IE用のクリックイベントを選ぶことができるように思えます。私はクロムについてはわかりませんが、同じ問題かもしれません。オプションのクリックイベントをリッスンする代わりに、changeイベントを使用して、選択の変更を追跡することができます。

変更イベントがあなたがしようとしていることに対応している場合は、次の操作を実行できます。

$(document).ready(function() { 
$("#B").hide(); 
$("#C").hide(); 
$('select#A').each(function() { 
    $(this).change(function() { 
      $.getJSON(stuff, callback(data)); 
     }); 

}); 

}); 関数コールバック(データ){

$("#B").show(); 

};

Selectイベントの変更イベントをどのようにリッスンしているかに注目してください。 私はこれが助けてくれることを願っています!

+0

申し訳ありません。 Typo ------ – Dirk

+0

コールバックが呼び出されない可能性はありますか? Firebugでjavascriptコードをデバッグして、コールバック関数が呼び出されるかどうかを確認しましたか? – ak3nat0n

+0

uh .... ChromeでFirebugを使用するにはどうすればよいですか? – Dirk

0

コールバック関数にアラートを表示すると表示されますか?

+0

IE/Chromeの場合は – Dirk

関連する問題