jQuery.sub()
Создает новую копию jQuery, свойства и методы которого могут быть изменены без влияния на исходный объект jQuery. Метод появился в jQuery 1.5.
Существует два специфичных варианта использования, для которых создан метод jQuery.sub(). Первый предназначен для обеспечения безболезненного способа переопределения методов jQuery без полного уничтожения исходных (оригинальных) методов; другой нужен для помощи в создании инкапсуляции и базового пространства имен для плагинов jQuery.
Обратите внимание на то, что jQuery.sub() ни в коем случае не является попыткой обособления от самой библиотеки jQuery. Все методы новой версии объекта jQuery с помощью метода sub() будут указывать на исходный (все события, запросы Ajax и т.д. будут выполняться через основной объект).
Частные случаи использования этого метода хорошо описаны в примерах ниже.
Примеры использования метода jQuery.sub()
Задача: Переопределить некоторые методы jQuery для обеспечения нового функционала.
(function() {
var myjQuery = jQuery.sub();
myjQuery.fn.remove = function() {
// Новый функционал: запуск события удаления
this.trigger("remove");
// Гарантируем вызов оригинального метода удаления в jQuery
return jQuery.fn.remove.apply( this, arguments );
};
myjQuery(function($) {
$(".menu").click(function() {
$(this).find(".submenu").remove();
});
// Новое события удаления теперь запускается из этой копии jQuery
$(document).bind("remove", function(e) {
$(e.target).parent().hide();
});
});
})();
// Обычный jQuery не запускает события remove при удалении элемента
// Эта функциональность доступна только в модифицированной версии 'myjQuery'.
Задача: Создать плагин, который возвращает специфичные плагину методы.
(function() {
// Создаем новую копию объекта jQuery, используя sub()
var plugin = jQuery.sub();
// Расширяем новую копию объекта новыми методами плагина
plugin.fn.extend({
open: function() {
return this.show();
},
close: function() {
return this.hide();
}
});
// Добавляем наш плагин к исходному объекту jQuery
jQuery.fn.myplugin = function() {
this.addClass("plugin");
// Гарантируем, что наш плагин возвращает нашу специальную версию jQuery с плагином
return plugin( this );
};
})();
$(document).ready(function() {
// Вызов плагина, метода open, который теперь существует
$('#main').myplugin().open();
// Примечание: Вызов просто $("#main").open() работать не будет, так как в обычном объекте jQuery нет такого метода!
});
Новое в справочниках
- Метод jQuery.ajax() / 20.04.2011
- jQuery-селектор [attribute$="value"] / 04.02.2011
- Метод jQuery.sub() / 31.01.2011
- Популярные плагины jQuery / 20.01.2011
- Метод .animate() в jQuery / 27.12.2010
