このスニペットを使用してボタンがクリックされたときに、フォーム内のセクションに HTML を追加する関数があります。
function add_series() {
$(document).on("click", "a.add-another-series", function(e) {
e.preventDefault();
// Get the containing div that we will append the retrieved HTML to
$container = $(this).parent().parent().parent().parent();
// Get the HTML via ajax and append it to the containing div
$.get('ajax/add-series/' + study_number + '/' + series_number, function(data){
$container.append(data);
});
});
}
以下は、AJAX を介して呼び出し元の関数に返される (省略された) HTML 構造です (CAPS は、このテキストが変数であることを示します)。
<div class="series" data-study-number="STUDY_NUMBER" data-series-number="SERIES_NUMBER">
<h4>series SERIES_NUMBER</h4>
<div class="row">
<div id="RANDOM_ID" class="small-12 columns large-centered uploader"> </div>
</div>
</div>
これは正常に機能し、期待どおりにページに表示されます。
私がする必要があるのは、最初の関数内から id=RANDOM_ID で div を取得することです (この質問の冒頭にある「クリック時」のもの)。テストするために、次のセレクターを使用してすべての .series div を取得しようとしました。
$series_divs = $('.study[data-study-number="' + STUDY_NUMBER + '"]').find('.content').find('.series');
これは、.append() 呼び出しの前に存在した .series div のみを返すようです。追加したばかりのものは返されません。ここで何か間違ったことをしていますか?