перегрузка функций 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:14. |