1

我想用带有“查询”选项的数组值填充 select2。问题是,数组可以是四个数组中的一个。应该加载哪个数组的声明取决于 select2 div 容器的父 div 的类名。

var preload_data_editors = [
    { id: '1', text: '1'}
];
var preload_data_techniker = [
    { id: '2', text: '2'}
];
var preload_data_cvd = [
    { id: '3', text: '3'}
];
var preload_data_pgmrat = [
    { id: '4', text: '4'}
];
$('div.multisel div').select2({
    multiple: true,
    query: function (query) {
        var data = {results: []};
        switch ($(this).parent('div').attr('class')) {
            case 'multisel editors':
                preload = preload_data_editors;
                break;
            case 'multisel techniker':
                preload = preload_data_techniker;
                break;
            case 'multisel cvd':
                preload = preload_data_cvd;
                break;
            case 'multisel pgmrat':
                preload = preload_data_pgmrat;
                break;
        }
        $.each(preload, function() {
            // if (query.term.length == 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0 ){
                data.results.push({id: this.id, text: this.text });
            // }
        });
        query.callback(data);
    }
})

我的问题:$(this)inswitch没有设置。我怎样才能$(this)按预期进行设置?也许我需要说我在这一点上对 jQuery 不是很好。

也许你可以帮我解决这个问题。

提前致谢!

4

1 回答 1

0

看起来this里面query是指向小部件对象,你可以this.element用来引用小部件被初始化的元素

演示:Plunker

于 2013-08-21T03:12:00.610 回答