Переопределить jQuery .val () функция?

Есть ли способ легко переопределить jQuery val() функция?

Причина я хочу переопределить его, состоит в том, что я хочу добавить некоторую обработку каждый раз, когда значение установлено для элемента. И я не хочу делать другой пользовательский метод set значения, такой как myVal().

28
задан Sebastian Zartner 2 November 2015 в 09:38
поделиться

2 ответа

-

Вы можете хранить ссылку на оригинальную функцию Val , затем переопределите его и выполняю свою обработку, а позже вызовут его с Call , использовать Правильный контекст:

(function ($) {
  var originalVal = $.fn.val;
  $.fn.val = function(value) {
    if (typeof value != 'undefined') {
      // setter invoked, do processing
    }
    return originalVal.call(this, value);
  };
})(jQuery);

Обратите внимание, что вы можете различить вызов Getter $ (Selector) .val (); и вызов сеттером $ (селектор) .val («новое значение») ; Просто проверив, является ли значение undefined или нет.

48
ответ дан 28 November 2019 в 02:44
поделиться

Если я вас правильно понял, что-то вроде этого должно отлично подойти:

jQuery.fn.val = function (new_val) {
    alert("You set a val! How wonderful!");
    this.value = new_val;
};

Просто убедитесь, что вы включили обычную функциональность: получение значений селекта и так далее. Просто вставьте этот код после после обычной библиотеки jQuery.

1
ответ дан 28 November 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: