如何在没有触发事件的情况下更改select2的值?

时间:2019-04-29 06:14:44

标签: javascript jquery jquery-select2

我有一个select2 select元素,我正在通过jQuery设置其值

$("#select2").val(elment_id).trigger('change');

但是,我已经定义了一个onchange事件处理程序。

$('#select2').on('change', function(e) {
//TODO
});

我只想更改(设置)select2的值而不触发更改事件。你知道怎么做吗?

3 个答案:

答案 0 :(得分:1)

有一个特殊的事件可以刷新它:

$("#select2").val(elment_id).trigger('change.select2');

来自文档:

  

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

$('#mySelect2').val('US'); // Change the value or make some change to the internal state
$('#mySelect2').trigger('change.select2'); // Notify only Select2 of changes

答案 1 :(得分:1)

您可以使用Jquery扩展名创建这样的新原型

$.fn.extend({
  Val: function(a) {
    $(this).val(a).trigger('change');
  }
})

$('#select2').Val(1)

答案 2 :(得分:0)

这取决于您何时要更改select元素中的值。这取决于其他因素吗?如果要在选择元素更改时触发事件,但又不想触发已定义的“ onchange”操作,则可以选择下一个唯一的类,并为该类构建下一个“ onchange”事件。但是,正如我之前说的,我不知道您要实现什么目标,很难说哪种解决方案是最好的