簡體   English   中英

jQuery .on更改事件綁定但不觸發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM