我有幾個選擇設置,並添加了一種方法來添加一組新的。可以正常工作,除非我在新元素上再次運行相同的「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>
編輯:解決
我失蹤了在新的DOM元素上使用類「funnel-group」,因此將它用作選擇器是沒有用的。添加它,它的工作
您是否在Chrome控制檯中測試了它,確保您的選擇適用於「this」上下文。我認爲你在錯誤的節點。 – Mikes3ds
我有,這是讓我瘋了。如果我在「打開」通話後將警報或console.log插入功能,它可以工作,但由於某種原因,它不會讓我選擇它的子元素 – David