2016-10-01 15 views
1

あらすじ:.htmlを使用して変更した後の選択でオプションを数える()

私は、いくつかのことをトリガー要素の変更イベントに文字列を返します

  1. まずAJAX呼び出しを持っていますhtmlオプションを含む
  2. 次に、それらのオプションをドロップダウンに次のように挿入します。 selectObject.empty().html(optionString);
  3. これはうまくいくようですが、ここでは空白/空のオプションを1つだけ含むオプション文字列の可能性があります。その場合、ドロップダウンを非表示にする必要があります。だから、(別の関数で)私は選択のオプションをカウントしようと修正後のそれはそうのような:

var numberOfOptions = $('#id_of_select').children('option').length;

問題は、それが変更された前に、このカウントはオプションの数を返すことです。追加されたHTMLはまだ認識されません。

アドバイス/解決策はありますか?

+1

あなたのコードは動作しますが、ajaxは非同期です。長さを確認する前に、結果と挿入された要素を待つ必要があります – adeneo

+0

どこでオプションを数えますか?アヤックスの中か、アヤックスの後ろか? ajaxの後に数えると、selectタグがajaxの中に追加される前にカウントが返されます。だから、新しいオプションを追加したあと、Ajax内で数えてみてください – mrid

+0

ありがとう!作品! –

答えて

0

は、問題は、私はアヤックスが非同期であるという事実を考慮していないということでした

$.ajax({ 
    url: your_url lead_id, 
    type: "your_request_method", 
    data: data, 
    success: function(data){ 
       if(data) 
       { 
        code_to_add_options_to_select 

        var numberOfOptions = $('select#id_of_select option').length; 
       } 
       else 
        alert("An error occurred"); 
      } 
}); 
0

を使用してみてください。ロジックがajax呼び出しの結果に依存する場合、それは "成功"キー/関数内になければなりません。

関連する問題