dtsb-inserted
自版本:SearchBuilder 1.0.0 起
init 函数中的一个元素已插入到 DOM 中。
请注意 - 此属性需要 DataTables 的 SearchBuilder 扩展。
描述
每当 SearchBuilder.Condition
对象的 -init
函数中创建的元素之一由 SearchBuilder 插入到文档中时,就会触发此事件。这很有用,因为对于某些 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');
}
});
// ...
}
}