返回值:jQueryjQuery.sub()

V1.5概述

可創建一個新的jQuery副本,不影響原有的jQuery對像。

有兩個具體使用jQuery.sub()創建案例。首先是提供完全沒有破壞jQuery原有一切的方法,另一個用于幫助做jQuery插件封裝和基本命名空間。

请注意,jQuery.sub()不会做任何特殊的隔离 - 这不是它的意图。所有关于jQuery的sub'd版本的方法将仍然指向原来的jQuery。(绑定和触发仍将通过主jQuery的事件,数据将通过主绑定的元素的jQuery,Ajax的查询和活动将通过主jQuery的运行,等等)。

請注意,如果你正在尋找使用這個開發插件,應首先認真考虑使用一些类似jQuery UI widget工厂,这两个状态和插件管理子方法。 使用jQuery UI widget的一些例子建立一個插件。

這種方法的具體使用情況下可以通過一些例子最好的描述。

參數

jQuery.sub()

示例

描述:

添加一個jQuery的方法,以便它不會受到外部分:

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的方法,以提供新的功能。

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").click(function() {

      $(this).find(".submenu").remove();

    });



    // A new remove event is now triggered from this copy of jQuery

    $(document).bind("remove", function(e) {

      $(e.target).parent().hide();

    });

  });

})();



// Regular jQuery doesn't trigger a remove event when removing an element

// This functionality is only contained within the modified 'myjQuery'.

描述:

創建一個插件,它返回插件的具體辦法。

jQuery 代码:
(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!

});