2011-08-15 11 views
1

私はthis documentationに基づいて最初のjQueryプラグインを作成していますが、私はそれについて質問しています。どのように私は要素なしで、スタンドアロン機能としてそれを使用することができ、しかし構造体としてjQueryを関数として使用する方法はありますか?

$("myelement").myfunction({title: blah}); 

:この特定の例では、次のような、要素と方法としてのjQueryを使用してどのようにお見せ?例:

$.myfunction({title: blah}); 

私は、現時点ではこれを行うと私が得る「$ .myfunctionは関数ではありません」

ありがとう!

編集:現在のコード:

(function($){ 
    $.fn.tasks = function(options) { 

    var defaults = { 
     'action' : 'gettasks', 
     'list'  : 'default', 
     'task'  : '', 
     'title'  : '' 
    }; 

    var options = $.extend({}, defaults, options); 

    return this.each(function() { 

     var $this = $(this); 
     var ajax_load = "<img class='loading' src='images/ajax-loader.gif' alt='loading...' />"; 
     var urlparams; 

     if (options.action == 'gettasks') { 
      urlparams = "action=gettasks"; 
      urlparams += "&list="+options.list; 
     } 

     if (options.action == 'getlists') { 
      urlparams = "action=getlists"; 
     } 

     if (options.action == 'create') { 
      urlparams = "action=create&list="+options.list+"&title="+options.title; 
     } 

     if (options.action == 'update') { 
      urlparams = "action=update&list="+options.list+"&taskid="+options.task; 
     } 


     $.ajax({ 
      url: "include/tasks_handler.php?"+urlparams, 
      cache: false, 
      beforeSend: function() { 
       $this.html(ajax_load); 
      }, 
      success: function(html){ 
       $this.html(html); 
       if (options.action == 'update') { 
        $("#taskList").tasks(); 
       } 
      } 
     }); 

    }); 
    }; 
})(jQuery); 

答えて

2

この

$.myfunction = function(options){ 
    //method logic here 
}; 

//Use it here 
$.myfunction({title: blah}); 

のような関数としてあなたは、このメソッドからjQueryオブジェクトを返すまでとしない限り、あなたはjQueryチェーンを使用することはできませんしかし、この方法でそれを定義します。

0

ただ、このようにそれを実行します。

$.pluginName = function(/* arguments here */) { 
    // Plugin Code here 
} 
1

ないjQuery.fnに、jQueryオブジェクト自体にあなたの関数を追加します。

$.myfunction = function() { ... }; 
+0

DOMとスタンドアロンの両方でどのように動作させることができますか?サンプルコードを質問に追加しました。 – FLX

0

あなたはこのようにそれを定義することができます。

jQuery.myfunction = function(options) { 
    alert(options.title); 
}; 

と、次のように呼び出す:

$.myfunction({title: 'foo bar'}); 
1

他の回答に加えて、それぞれの道を行うにはどのようにを示すここに掲載、重要ここでの区別は:$名前空間または$.fn名前空間を使用する必要がありますか?

jQueryの内部メソッドが表示されている場合は、次のように区別されます。

  • $.fnは、DOMの存在の知識を持たない、オブジェクト(アレイ、コレクション、POJOなど)上で動作するために使用されるDOM要素
  • $上で動作するために使用されます。
+0

私はそれをDOMと時にはスタンドアロンで使用することがあるため、相互排他的ではないので、両方の方法で動作させたいのです。 – FLX

関連する問題