перегрузка функций jquery
добрый день!
не подскажете возможно ли сделать следующее ? есть <input id="test1" value="val1"> $('#test1').val() возвращает "val1" . возможно ли сделать следующее? "перегрузить" метод val() для объекта $('#test1'). чтобы $('#test1').val() возвращал другое значение. но при этом атрибут value был равен "val1". $('#test1').val = function(){ return "val2" ; } пробовал так, но к сожалению, не сработало. console.log($('#test1').val()) ; /// логирует val1, т.е. текущее значение. что я делаю не так? и вообще возможно ли это? заранее спасибо. |
Выполняя $('#test1'), вы каждый раз создаете новый экземпляр объекта jQuery. Если упростить код библиотеки, то происходит примерно следующее:
function jQuery(arg) { var list = document.querySelectorAll(arg), i = list.length; while (i--) { this[i] = list[i]; } } function $(arg) { return new jQuery(arg); } чтобы изменить метод val для всех объектов jQuery, необходимо внести изменения в прототип: jQuery.prorotype.val = function () { return "val2"; }; чтобы изменить метод val конкретного экземпляра jQuery, необходимо сохранить на него ссылку, и работать с ним по этой ссылке: var $test = $('#test1'); $test.val = function () { return "val2"; }; alert($test.val()); |
огромное спасибо за разъяснения.
всё работает. |
Цитата:
challenger, В следующий раз создавайте тему в соответсвующем разделе! |
да, и jQuery.prototype.val === $.fn.val
write less, do more)) |
Часовой пояс GMT +3, время: 23:36. |