Я использую JQuery для загрузки нового контента (с раскрывающимся списком выбора материалов) в div, когда пользователь нажимает кнопку. Однако при загрузке нового div раскрывающийся список выбора не работает. Вот как я это делаю, любая помощь приветствуется.
<script>
$(document).ready(function(){
$("#second-page").hide();
$("#continue-button").click(function(){
var $second_page_content=$("#second-page").html();
$("#first-page").html($second_page_content);
$("#second-page").trigger('contentChanged');
});
$("select").on('contentChanged', function(){
$(this).material_select();
});
});
</script>
<div class="row" id="first-page">
<form>
<div class = "row">
<select id="animal">
<option value = "bird">Bird</option>
<option value = "cat">Cat</option>
<option value = "Insect">Insect</option>
</select>
</div>
<button class="btn waves-effect waves-light" id="continue-button">CONTINUE</button>
</form>
</div>
<div class="row" id="second-page">
<form>
<div class = "row">
<select id="animal-type">
<option value = "hen">Hen</option>
<option value = "lion">Lion</option>
<option value = "butterfly">Butterfly</option>
</select>
</div>
</form>
</div>
Ответ 2 · SubjectDelta
Давайте запишем то, что я предложил в комментариях... Это должно помочь:
$('#second-page').on('contentChanged', 'select', function() {
$(this).material_select();
});
Но я предлагаю вам больше что-то вроде
$("#continue-button").click(function() {
$("#first-page").hide();
$("#second-page").show();
});
ОБНОВЛЕНИЕ
Я не прочитал это $("#second-page").trigger('contentChanged'); при первом чтении, вы на самом деле запускаете это событие для #second-page, а не для выбранных, так что...
$('#second-page').on('contentChanged', function() {
$(this).find('select').material_select();
});
В противном случае, если вы хотите сохранить свою первую идею, вы должны инициировать это событие при выборе, как это
$("#second-page").find('select').trigger('contentChanged');
ФИНАЛЬНОЕ ОБНОВЛЕНИЕ
Вы, вероятно, добавляете код, который не писали в своем вопросе, потому что это должно быть очень простой задачей... Ваши формы фальшивые, нигде нет ни отправки, ни перезагрузки, просто таинственный material_select...
Я пытался переписать ваш материал, он работает так, как я вам посоветовал.
Удачи
$(document).ready(function(){
$('#continue-button').click(function(){
$('#first-page').hide();
$('#second-page').show();
$('#animal-type').material_select();
});
});
#second-page { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row" id="first-page">
<div class = "row">
<select id="animal">
<option value = "bird">Bird</option>
<option value = "cat">Cat</option>
<option value = "Insect">Insect</option>
</select>
</div>
<button class="btn waves-effect waves-light" id="continue-button">
CONTINUE
</button>
</div>
<div class="row" id="second-page">
<div class = "row">
<select id="animal-type">
<option value = "hen">Hen</option>
<option value = "lion">Lion</option>
<option value = "butterfly">Butterfly</option>
</select>
</div>
</div>