{hero}

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

类型

事件

描述

init 函数 (SearchBuilder.Condition#init) 创建的 HTML 元素插入到文档中时触发。

示例

插入后在 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');
			}
		});

		// ...
	}
}