2016-03-20 16 views
1

「スコープ」が本当に適切な用語であるかどうかは考えられませんが、なぜ私が期待しているように動作しないのか誰かが説明できるかどうかは疑問でした。jQuery select要素にオプションを追加して戻す

https://jsfiddle.net/jmillsy/uucf5xmb/1/

私はいつも()ブロック内に

$('.myclass option').each(function() { 
    $('#output').append($(this).val()); 
}); 

を移動する場合は、私が期待するように、それが動作します。

答えて

0

問題は、Ajax呼び出しが非同期であることです。これは、コール直後にコードが実行されたことを意味し、その前に選択肢にオプションがあることを意味します。

これを変更するには、ajaxオプションでasyncというオプションをfalseに指定します。そうすれば、optionが追加され、outputブロックにリストされたコードが実行されます。

+0

確かにはい!完璧な意味合いを持つ。ありがとうございました – user2719546

1

はそのようにそれを使用して、それが動作します:

$.ajax({ 
    type: "POST", 
    url: "localhost:8080/404", 
    dataType: 'json', 
    data: {} 
}).always(function(data) { 

    $('.myclass').append(
    "<option value='op1'>Option 1</option>" 
); 

    $('.myclass').append(
    "<option value='op2'>Option 2</option>" 
); 
}).complete(function() { 
    $('.myclass option').each(function() { 
    $('#output').append($(this).val()); 
    }); 
}); 

問題は、あなたが考えるほどあなたが行うとき、あなたのコードは、それぞれが、オプションはまだ

UPDATEレンダリングされないことを、実行されていないということです非同期で他のバージョンでも

作品、ええ:)

関連する問題