我有一个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选项,但仅在第一种情况下才触发事件。
答案 0 :(得分:-1)
当某些form
元素更改值时,将触发change
事件。您将侦听器绑定到该事件并显式触发它。
change.select2
事件是一个单独的事件,与dom元素无关。根据{{3}}:
其他组件通常会监听更改事件, 或附加可能带有侧面的自定义事件处理程序 效果。要将范围限制为仅,请将该更改通知Select2, 使用.select2事件命名空间
因此它永远不会到达“真实” select
元素,因此不会执行您的处理程序。
您可以深入研究documentation,看看它只是用来通知其他select2
组件以更新其显示等。