如何为选择(jQuery)触发更改事件

时间:2013-02-27 01:35:20

标签: javascript jquery jquery-chosen

在点击重置按钮之前,我在选择中选择“公司”(下拉列表)。单击重置后,事件正常发生。我再次选择“公司”,但下拉列表中的事件change不会发生。

有人能告诉我如何在单击重置按钮然后单击同一元素后触发下拉列表的更改事件吗?

到目前为止我的代码:

$("#mainMenu").change(function(e){
    e.preventDefault();
    loadFirstManu(true);
});

重置按钮的代码:

$("#btn_reset").click(function() {
  CKEDITOR.instances.ckeditor.setData('');
  $('.mchosen').each(function() {
     $(this).val('').trigger('liszt:updated');
     $('#submenu').attr('disabled', 'disabled').html('');
     $('#secondsubmenu').attr('disabled', 'disabled').html('');
     $('#s-menu').removeClass('required').html('');
     $('#secondsubmenu').removeClass('validate[required]');
     $('#tabmenu').attr('disabled', 'disabled').html('');
     $('#tab').removeClass('required').html('');
  });

});

6 个答案:

答案 0 :(得分:24)

这就是我想到的:

$('#my-select').val(5).trigger("liszt:updated")

liszt:updated已不再适用于所选的新版本,而是使用下面的Alexandru Cojan's回答建议

 trigger("chosen:updated");

答案 1 :(得分:8)

对于所选择的较新版本,该事件被选中:已更新"

$(selector).trigger("chosen:updated")

答案 2 :(得分:7)

如果我只需刷新选择的值 - .trigger('chosen:updated')就足够了。但是如果我有改变处理程序并希望它被调用 - 我需要做.trigger('chosen:updated').change()

答案 3 :(得分:0)

我不知道这是不是你的情况,但上面的代码应该有用,

$("#mainMenu").change(function(e){
        e.preventDefault();
        loadFirstManu(true);
    });

但请注意,当您取消焦点选择输入时,大多数浏览器都会发生“更改”事件

因此,当您点击重置时,就在执行重置操作之前,会触发 onchange

现在尝试在更改选择后点击选择输入外部并查看它是否仍然有效

答案 4 :(得分:0)

也许你应该尝试使用.on,因为你的$('#mainMenu')可能已在某处改变了(不能没有例子)。试着这样做:

$("body").on('change','#mainMenu',function(){ 
  ...
});

或任何父选择器而不是“沉重的”身体

答案 5 :(得分:0)

如果我没理解你,那么你想在点击重置按钮后触发事件更改。          您只需在代码中添加一行即可完成此操作          //代码

     $("#btn_reset").click(function(){
       // your code here
       $("#mainMenu").trigger('change'); 
       //you can write this as per your requirements ie. at start or end.

      });