[英]jQuery .on change event binding but not firing
var myTimelineVis = {
loadData: function(visItems, visContainer, visOptions, visTimelines) {
$.getJSON('myURL/' + $(this).val(), function(data) {
visItems.clear();
$.each(data, function(i, imp_sched_events) {
$.each(imp_sched_events.items.timeline_dataset, function(i, item) {
visItems.add(item);
if ($(visContainer).is(':empty')) {
visTimeline = new vis.Timeline(visContainer, visItems, visOptions);
} else {
visItems.update(item);
}
visTimeline.fit();
$('.vis-item-content').foundation();
});
});
});
},
setData: function(selectClass) {
var visItems = new vis.DataSet(),
visContainer = document.getElementById('visualization'),
visOptions = {},
visTimeline = '';
$(selectClass).on('change', function(visItems, visContainer, visOptions, visTimelines) {
this.loadData(visItems, visContainer, visOptions, visTimelines);
});
}
}
$(document).ready(function() {
myTimelineVis.setData('select.implementation_schedule');
});
我試圖在頁面加載時創建一個vis時間軸,然后在我的選擇更改時將數據加載到它(我有兩個選擇)。 在頁面加載時,我可以看到在Chrome控制台中將更改事件綁定到兩個選擇,但是在實際選擇更改上什么也沒有發生,甚至沒有錯誤。 就像它們不存在一樣。
這是范圍問題嗎?
對於jQuery,偵聽器不會添加到Ajax調用中,而是添加到$(document).ready()中。 它的工作方式不同於普通JavaScript。
如果選擇是動態更改的,則需要對硬選擇器使用以下語法。 選擇器可以像“ #myForm select”一樣廣泛。 無需使用變量。
$(document).on('change', '.selectClass', function(visItems, visContainer, visOptions, visTimelines) {
this.loadData(visItems, visContainer, visOptions, visTimelines);
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.