Событие изменения не вызывается, когда значение задано программно

#jquery

#jquery ( jquery )

Вопрос:

Обычно, когда пользователь выбирает элемент в a <select> , запускается событие ‘change’. Однако, когда вы меняете значение того же <select> значения с $('select').val('something') помощью , событие не запускается.

Я знаю, что мог бы это сделать, $('select').val('something').trigger('change'); но это не та проблема, которую я пытаюсь решить…

Есть ли способ заставить событие изменения работать, не вызывая его вручную?

Я собрал быстрый JsFiddle, чтобы лучше объяснить проблему, проверьте это:

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

Ваше здоровье

Комментарии:

1. «без ручного запуска» … нет.

2. короткий ответ: нет, используйте trigger()

3. Какую проблему вы пытаетесь решить? .val() не буду этого делать.

Ответ №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');