У меня есть пара настроек, и добавлен способ добавления нового набора из них. Работает нормально, за исключением случаев, когда я снова запускаю ту же функцию «on» на новом элементе, она срабатывает правильно, но дочерний элемент не изменяется.jQuery о том, что он не работает над недавно добавленным дочерним элементом
$('body').on('change', '.select-funnel-process', function() {
var data = {
account: APP.account,
type: $('option:selected', this).val()
}
var selectDiv = $(this).parents('.funnel-group').find('.process-details')
//this doesn't work on the new elements
$.post(APP.api + 'get/get-data', data, function(res) {
var json = JSON.parse(res);
var result = json.result;
for (var p in result) {
//this doesn't work on the new elements
selectDiv.append('<option class="added_option" value="' + p + '">' + p + '</option>').prop('disabled', false)
}
selectDiv.select2();
//this doesn't work on the new elements
});
})
Есть ли способ вручную связать прослушиватель событий с дочерним элементом? Странно, что начальный выбор работает в-изменении, но это дочерний элемент не будет работать.
Я думаю, что это что-то делать с тем, как я устанавливаю вверх selectDiv
Вот HTML-код, который добавлен:
<div class="wrapper-class">
<div class="box box-default">
<div class="box-header with-border">
<h3 class="box-title"><i class="fa fa-bars"></i> Funnel Step <span class="funnel-step-id"></span></h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
<button class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
</div>
</div><!-- /.box-header -->
<div class="box-body">
<div class="row">
<div class="col-md-12">
<form class="form-inline funnel-group">
<div class="form-group col-md-3">
<select class="form-control input-block-level select-funnel-process" name="properties">
<option selected="selected" disabled="disabled">Select a Process</option>
<option value="page">Page View</option>
<option value="event">Event</option>
</select>
</div>
<div class="form-group col-md-3">
<select class="form-control input-block-level process-details" name="properties" >
<option selected="selected" disabled="disabled">Select a Process First</option>
</select>
</div>
</form>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.box-body -->
</div>
</div>
Edit: решена
Я пропускал класс «воронка-группа» на новом элементе DOM, поэтому использование его в качестве селектора было бесполезным. Добавлено его, и оно сработало
Вы протестировали его в консоли хром, чтобы убедиться, что ваш выбор работает для этого «контекста». Я думаю, что вы на неправильном узле. – Mikes3ds
У меня есть, вот что заставляет меня сходить с ума. Если я вставляю предупреждение или console.log в функцию сразу после вызова «on», он работает, но по какой-то причине он не позволит мне выбрать дочерний элемент из него. – David