Каждый объект jQuery включает в себя свойство selector
, которое содержит (дух) оригинальный селектор, который использовался для получения элементов (я даже не работал с ним вообще, поэтому я не уверен, что с ним происходит как вы проходите через цепочку методов).
Таким образом, вы можете заключить метод val
в функцию, которая проверяет свойство selector
и затем решает, использовать ли вашу функцию или оригинал. Это будет выглядеть примерно так:
$.fn.old_val = $.fn.val;
$.fn.val = function () {
if (this.selector === 'select') {
console.log('The new val');
}
return this.old_val.apply(this, arguments);
};
У вас, по сути, было это раньше, я просто настраиваю его, чтобы оно распространялось на все новые экземпляры jQuery.
(Кроме того, это довольно упрощенно само по себе; вы захотите соответственно изменить / улучшить его.)