我使用了.on("change")
事件函数,因为我的整个代码中有一部分是动态变化的。 .trigger("change")
在.change()
中正常工作,但在.on("change")
上则无效。这是我的代码:
$('#popupContent').on('change', '#gradeYearLevel', function() {
var $course = $('#course');
var $section = $('#section');
if ($(this).val() > 4) {
$type = 0;
}
else {
$type = 1;
}
if ($('#gradeYearLevel').val() == '') {
$course.empty().append($("<option>", {"value": ""}).html("-- Select --"));
$section.empty().append($("<option>", {"value": ""}).html("-- Select --"));
}
else {
$.getJSON(BASE_PATH + "getJSONCoursesByType/" + $type, function(data) {
$course.empty().append($("<option>", {"value": ""}).html("-- Select --"));
$.each(data, function(k,v){
$course.append(
$("<option>", {"value": v.id}).html(v.title)
);
});
});
$.getJSON(BASE_PATH + "getJSONSectionsByType/" + $type, function(data) {
$section.empty().append($("<option>", {"value": ""}).html("-- Select --"));
$.each(data, function(k,v){
$section.append(
$("<option>", {"value": v.id}).html(v.name)
);
});
});
}
}).trigger("change");
答案 0 :(得分:1)
问题是因为您触发了从change
,而不是 #popupContent
返回的on()
元素上的#gradeYearLevel
事件委托事件处理程序正在侦听。
您需要在子元素上调用trigger()
,以便事件可以冒泡。试试这个:
$('#popupContent').on('change', '#gradeYearLevel', function() {
// your code here...
})
$('#gradeYearLevel').trigger("change");