Есть ли способ легко переопределить jQuery val()
функция?
Причина я хочу переопределить его, состоит в том, что я хочу добавить некоторую обработку каждый раз, когда значение установлено для элемента. И я не хочу делать другой пользовательский метод set значения, такой как myVal()
.
Вы можете хранить ссылку на оригинальную функцию 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
или нет.
Если я вас правильно понял, что-то вроде этого должно отлично подойти:
jQuery.fn.val = function (new_val) {
alert("You set a val! How wonderful!");
this.value = new_val;
};
Просто убедитесь, что вы включили обычную функциональность: получение значений селекта и так далее. Просто вставьте этот код после после обычной библиотеки jQuery.