【问题标题】:JQuery: trigger('change') vs trigger('change.select2')JQuery:触发器('change')与触发器('change.select2')
【发布时间】:2018-10-10 06:16:22
【问题描述】:

我有一个 select2 元素 (#project_id)。我也有这个元素的更改事件。

$(document).on('change', '#project_id', function () {
     //my code...
}

仅当我使用以下内容时才会触发更改事件:

$("#project_id").html('<option value="' + res.project_id + '">' + res.project_name + ' [ ' + res.project_id + ' ]</option>');
$("#project_id").val(res.project_id).trigger('change');

我想了解为什么在使用时不会触发更改事件:

$("#project_id").html('<option value="' + res.project_id + '">' + res.project_name + ' [ ' + res.project_id + ' ]</option>');
$("#project_id").val(res.project_id).trigger('change.select2');

在这两种情况下,select2 选项都发生了变化,但事件仅在第一种情况下触发。

【问题讨论】:

    标签: jquery html triggers jquery-select2


    【解决方案1】:

    change 事件在某些 form 元素更改值时触发。您将侦听器绑定到该事件并显式触发它。

    change.select2event 是一个单独的事件,与 dom 元素无关。根据documentation

    其他组件监听更改事件是很常见的, 或附加的自定义事件处理程序可能有侧 效果。要将范围限制为通知 Select2 更改, 使用 .select2 事件命名空间

    因此它永远不会到达“真正的”select 元素,因此您的处理程序不会被执行。

    您可以深入了解the source,看看它只是在使用它来通知其他select2 组件更新它们的显示等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多