dtsb-inserted
自:SearchBuilder 1.0.0 起
來自 init 函式的元素已插入到 dom 中。
請注意 - 此屬性需要 DataTables 的 SearchBuilder 擴充功能。
描述
每當 SearchBuilder 將 SearchBuilder.Condition
物件的 -init
函式中建立的元素之一插入到文件中時,就會觸發此事件。這很有用,因為對於某些 jQuery 元素(例如 Select2),HTML 元素需要位於 dom 中,才能正確初始化功能。
此事件會在以下時機觸發
- 每當條件
select
元素變更時 - 每當資料
select
元素變更時 - 每當建立條件時
- 每當條件新增到群組時
- 每當條件從群組中移除時
- 每當條件縮排或取消縮排時
誠然,這是一個發生此事件的許多位置,但這是必要的。
當資料或條件 select
元素的值變更時,需要重設值元素。最簡單的方法是移除值元素,並將它們初始化為預設狀態。
當在同一個群組中新增或移除條件時,可能會需要從剩餘的條件中新增或移除更多按鈕,再次強調,最簡單的方法是移除並重建整個條件,套用先前存在的值。
對於縮排和取消縮排,條件會從一個群組中移除並新增到另一個群組,因此它們的 dom 元素需要從原始群組中移除並新增到下一個群組。
該事件會在 init 函式中建立的原始元素上觸發,以用於從使用者擷取值。這表示設定此事件接聽器的最佳位置也是在 init 函式中,方法是接聽 dtsb-inserted
。
類型
範例
在插入 Select 元素後,立即在該元素上初始化 Select2
{
init: function (that, fn, preDefined = null) {
let el = $('<select>');
$(el).prepend('<option></option>');
// ...
$(el).on('dtsb-inserted', function () {
if ($(el).hasClass('select2-hidden-accessible')) {
$(el).select2('destroy');
}
$(el).select2({ placeholder: 'Value' });
if (preDefined !== null) {
$(el).val(preDefined[0]);
$(el).trigger('input');
}
});
// ...
}
}