понедельник, 12 ноября 2012 г.

Для чего нужен jQuery.fn

Каждый кто сталкивался с написанием собственных плагинов на jQuery задавал вопрос — "В чем различие между объявлением функций через jQuery и jQuery.fn?".

Для того, чтобы ответить на поставленный вопрос приведу два примера.

Пример 1.

jQuery
.sayHello = function() {
  alert
('Привет! Найдено ' + this.length + 'элементов' );
}

$
('div').sayHello(); // ничего не происходит


Пример 2.

jQuery
.fn.sayHello = function() {
  alert
('Привет! Найдено ' + this.length + 'элементов' );
}

$
('div').sayHello(); // Выводит "Привет! найдено ХХ элементов", где ХХ - это количество найденных элементов на странице


Если запустить первый пример, то произойдет одно из двух событий — браузер выдаст ошибку (например, если у Вас установлен FireBug) либо не выдаст ничего. А если запустить второй пример, то на экране появится сообщение о количестве найденных элементов.

Прежде чем делать какие-либо выводы, приведу еще один пример:


jQuery
.sayHello = function(elem) {
  alert
('Привет! Найдено ' + elem.length + 'элементов' );
}

jQuery
.sayHello($('div'));


В данном примере, будет выдано сообщение о количестве найденных объектов. 

Думаю теперь у нас достаточно информации, чтобы сделать некоторые выводы:

Вывод 1: Если задать функцию через jQuery.fn, то она будет работать с элементами найденными через функцию $(). Контекст этой функции будет содержать выбранные элементы;

Вывод 2: Если задать функцию через jQuery, то к ней можно обратиться только через глобальный объект jQuery. В таком случае контекст функции будет указывать на глобальный объект window.

Таким образом, если нужно написать плагин, который будет работать только с выбранными объектами, то нужно его создавать в jQuery.fn, а если нам неважно какие элементы страницы были выбраны, то лучше создавать функцию черезjQuery.

Отблагодарить можно через форму справа "Donate" ... )

To reward you via the form on the right "Donate" ... )

:)

Комментариев нет :

Отправить комментарий

друзья )

cridex cms новости со всего мира
парсинг центр