jQuery.sub()Возвращает: jQueryверсия устаревшая: 1.7, удалена: 1.9
Описание: Создаёт новую копию jQuery, свойства и методы которой можно изменять без влияния на исходный объект jQuery.
-
версия добавлена: 1.5jQuery.sub()
- Этот метод не принимает никаких аргументов.
Примечание: Этот API был удалён в jQuery 1.9.
Существует две конкретные ситуации, для которых был создан jQuery.sub(). Первая — предоставить простой способ переопределения методов jQuery без полного уничтожения исходных методов, а вторая — помочь в инкапсуляции и базовом именовании пространств имён для плагинов jQuery.
Обратите внимание, что jQuery.sub() не пытается изолировать — это не его цель. Все методы в подменённой версии jQuery всё ещё будут указывать на исходную jQuery (события, привязанные и срабатывающие, всё ещё будут через основную jQuery, данные будут привязаны к элементам через основную jQuery, запросы Ajax и события будут выполняться через основную jQuery и т. д.).
Обратите внимание, что если вы хотите использовать это для разработки плагинов, то вы должны настоятельно рассмотреть возможность использования чего-то вроде фабрики виджетов jQuery UI, которая управляет состоянием и подметодами плагинов. Примеры использования фабрики виджетов jQuery UI для создания плагина.
Конкретные случаи использования этого метода лучше всего описать на примерах.
Примеры:
Добавление метода к подменённой jQuery, чтобы он не был доступен внешне:
(function(){
var sub$ = jQuery.sub();
sub$.fn.myCustomMethod = function() {
return "just for me";
};
sub$( document ).ready(function() {
sub$( "body" ).myCustomMethod() // "just for me"
});
})();
typeof jQuery( "body" ).myCustomMethod // undefined Переопределение некоторых методов jQuery для обеспечения новой функциональности.
(function() {
var myjQuery = jQuery.sub();
myjQuery.fn.remove = function() {
// New functionality: Trigger a remove event
this.trigger( "remove" );
// Be sure to call the original jQuery remove method
return jQuery.fn.remove.apply( this, arguments );
};
myjQuery(function( $ ) {
$( ".menu" ).on( "click", function() {
$( this ).find( ".submenu" ).remove();
});
// A new remove event is now triggered from this copy of jQuery
$( document ).on( "remove", function( event ) {
$( event.target ).parent().hide();
});
});
})();
// Regular jQuery doesn't trigger a remove event when removing an element
// This functionality is only contained within the modified 'myjQuery'. Создание плагина, который возвращает методы, специфичные для плагина.
(function() {
// Create a new copy of jQuery using sub()
var plugin = jQuery.sub();
// Extend that copy with the new plugin methods
plugin.fn.extend({
open: function() {
return this.show();
},
close: function() {
return this.hide();
}
});
// Add our plugin to the original jQuery
jQuery.fn.myplugin = function() {
this.addClass( "plugin" );
// Make sure our plugin returns our special plugin version of jQuery
return plugin( this );
};
})();
$( document ).ready(function() {
// Call the plugin, open method now exists
$( "#main" ).myplugin().open();
// Note: Calling just $( "#main" ).open() won't work as open doesn't exist!
});