1. 程式人生 > >jquery select2 級聯 賦值

jquery select2 級聯 賦值

 剛剛接觸jquery 不久,使用過程中需要對級聯的select2 進行賦值:$('#XX').val(x).trigger("change"); 會觸發$('#XX')的onchange 時間重新整理下級select,所以對下級的select賦值不是很方面。想了半天也沒有找打好的辦法,開始嘗試修改select2外掛,終於實現了對下級select的賦值。方法不是很好,希望得到改善。

方法如下:

   1.檢視select2 的js檔案,發現Select2.prototype._registerDomEvents方法註冊事件,其中 self.dataAdapter.current 方法設定當前選中項,而且為"change.select2"事件註冊了elf.dataAdapter.current方法,所以

select2通過  this.$element self.trigger('change')觸發選中事件。

   2.為了使onchange 上級select改變選中時不觸發原有的"onchange"事件,可以考慮為其註冊新的事件,當選中改變時觸發該事件。所以這裡註冊了change2事件

    this.$element.on('change2.select2', function () {
        self.dataAdapter.current(function (data) {
            self.trigger('selection:update', {
                data: data
            });
        });
    });

    當對上級select賦值時選擇觸發change2:$('#XX').val(x).trigger("change2");事件即可完成賦值,又不會觸發原來的onchange事件。