Spec-Zone.ru › jQuery

jQuery.sub()

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!
});

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/jQuery.sub

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API