以编程方式设置 的 值时,不会调用更改事件<select>



通常,当用户在<select>中选择一个项目时,会触发'change'事件。但是,当您用$('select').val('something')更改相同的<select>的值时,事件不会被触发。

我知道我能做到:$('select').val('something').trigger('change');但那不是我要解决的问题……

是否有一种方法可以让更改事件工作,而无需手动触发它?

我整理了一个快速的JsFiddle来更好地解释这个问题,请查看:

http://jsfiddle.net/W723K/1/

欢呼

这是不可能的,除非您手动触发更改函数。如果不喜欢多次输入该代码,可以扩展jQuery对象。小提琴:http://jsfiddle.net/W723K/2/

(function($){
    $.fn.changeVal = function(value){
        return this.each(function(){
            $(this).val(value).trigger('change');
        });
    }
})(jQuery);
//Usage:
$('select').changeVal('something');

最新更新