$.sub() 非推奨 1.9 削除

jQueryのコピーを生成します。オリジナルに影響を与えずに、プロパティとメソッドの編集をすることが出来ます。

$.sub( ) 1.5追加

jQuery1.7で非推奨となり、jQuery1.8でプラグインに移動されます。

このメソッドは次のような用途で使用されます。

  • オリジナルを全く変えずにjQueryのメッソドを上書きしたい場合
  • jQueryプラグインのための基本的な名前空間の確保とカプセル化

もし、これを使ってプラグインを作成することを考えているならば、その前にjQuery UI widgetのようなプラグインファクトリーの使用を検討することを強く推奨します。 jQuery UI widgetを使用したプラグイン作成例(英文) があるので、参考にしてみてください。

サンプル

元のjQueryに影響を与えることなく、subの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() {
    // "remove"イベントを発火
    this.trigger("remove");

    // jQuery本来のremoveメソッドを呼び出し
    return jQuery.fn.remove.apply( this, arguments );
  };

  myjQuery(function($) {
    $(".menu").click(function() {
      $(this).find(".submenu").remove();
    });

    // コピーされたjQueryの新しいremoveイベントはここで発火されます。
    $(document).bind("remove", function(e) {
      $(e.target).parent().hide();
    });
  });
})();

// 通常のjQueryは要素をremoveする際に、removeイベントを発火しません。
// このイベントは'myjQuery'でのみ、機能します。

固有の機能を持ったプラグインを作成して、元のjQueryに実装しています。

(function() {
  // sub() を使ってjQueryのコピーを作成します。
  var plugin = jQuery.sub();

  // 新しいプラグインをjQueryのコピーに実装します。
  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() {
  // 次のようにして追加したプラグインの機能を呼び出します。
  $('#main').myplugin().open();

  // 注: $("#main").open() と呼び出しても機能しません。
});

 Back to top

© 2010 - 2017 STUDIO KINGDOM