jQuery的:触发器('变化')vs触发器('change.select2')

时间:2018-10-10 06:16:22

标签: jquery html triggers jquery-select2

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

cd ./
rvm install ruby-2.3.1
gem install bundle
bundle install

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

$(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');

在两种情况下,都更改了select2选项,但仅在第一种情况下才触发事件。

1 个答案:

答案 0 :(得分:-1)

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

change.select2事件是一个单独的事件,与dom元素无关。根据{{​​3}}:

  

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

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

您可以深入研究documentation,看看它只是用来通知其他select2组件以更新其显示等。