219

JavaScriptの構文は次のとおりであることを知っています。

function myfunction(param){
  //some code
}

要素に追加できるjQueryで関数を宣言する方法はありますか? 例えば:

$('#my_div').myfunction()
4

14 に答える 14

311

ドキュメントから:

(function( $ ){
   $.fn.myfunction = function() {
      alert('hello world');
      return this;
   }; 
})( jQuery );

その後、あなたは

$('#my_div').myfunction();
于 2012-08-23T13:59:26.870 に答える
88

すでに受け取ったすべての回答にもかかわらず、関数で jQuery を使用するためにプラグインを作成する必要がないことは注目に値します。確かに、単純な 1 回限りの関数であれば、プラグインを作成するのはやり過ぎだと思います。セレクターをパラメーターとして関数に渡すだけで、はるかに簡単に実行できます。コードは次のようになります。

function myFunction($param) {
   $param.hide();  // or whatever you want to do
   ...
}

myFunction($('#my_div'));

$変数名のは必須ではないことに注意してください$param。その変数に jQuery セレクターが含まれていることを覚えやすくするのは、私の習慣です。param同様に使用できます。

于 2012-08-23T14:17:48.473 に答える
44

そこにはたくさんのドキュメント/チュートリアルがありますが、あなたの質問に対する簡単な答えは次のとおりです。

// to create a jQuery function, you basically just extend the jQuery prototype
// (using the fn alias)

$.fn.myfunction = function () {
    // blah
};

その関数内で、this変数は、関数を呼び出した jQuery ラップ セットに対応します。次のようなものです:

$.fn.myfunction = function () {
    console.log(this.length);
};

$('.foo').myfunction();

... クラスの要素数をコンソールにフラッシュしfooます。

もちろん、セマンティクスにはそれ以外にも (ベスト プラクティスやすべてのジャズも) あるので、よく読んでください。

于 2012-08-23T13:57:51.157 に答える
14

jQuery オブジェクトで関数を使用できるようにするには、次のように関数を jQuery プロトタイプ (fn は jQuery のプロトタイプのショートカット) に追加します。

jQuery.fn.myFunction = function() {
    // Usually iterate over the items and return for chainability
    // 'this' is the elements returns by the selector
    return this.each(function() { 
         // do something to each item matching the selector
    }
}

これは通常jQuery プラグインと呼ばれます。

例 - http://jsfiddle.net/VwPrm/

于 2012-08-23T14:00:00.130 に答える
10
$(function () {
    //declare function 
    $.fn.myfunction = function () {
        return true;
    };
});

$(document).ready(function () {
    //call function
    $("#my_div").myfunction();
});
于 2012-08-23T13:58:18.970 に答える
9

うん — あなたが説明しているのは jQuery プラグインです。

jQuery プラグインを作成するには、JavaScript で関数を作成し、オブジェクトのプロパティに割り当てますjQuery.fn

例えば

jQuery.fn.myfunction = function(param) {
    // Some code
}

プラグイン関数内で、thisキーワードは、プラグインが呼び出された jQuery オブジェクトに設定されます。だから、あなたがするとき:

$('#my_div').myfunction()

その後、this内部myfunctionは によって返される jQuery オブジェクトに設定され$('#my_div')ます。

詳細については、 http://docs.jquery.com/Plugins/Authoringを参照してください。

于 2012-08-23T13:56:34.850 に答える
7

拡張を使用することもできます(jQuery プラグインを作成する方法):

$.fn.extend(
{
    myfunction: function () 
    {
    },

    myfunction2: function () 
    {
    }
});

使用法:

$('#my_div').myfunction();
于 2014-06-27T16:40:15.483 に答える
6

以下のように、独自の jQuery プラグイン (選択した要素で呼び出すことができる関数) を作成できます。

(関数($){
    $.fn.myFunc = 関数(param1, param2){
        //this - jquery オブジェクトは選択した要素を保持します
    }
})( jQuery );


後で次のように呼び出します。

$('div').myFunc(1, null);
于 2012-08-23T13:57:31.463 に答える
4

はい、jquery を使用して選択した要素に適用するメソッドは jquery プラグインと呼ばれ、jquery ドキュメント内のオーサリングに関する情報が豊富にあります。

jquery単なる JavaScript であるため、「jquery メソッド」について特別なことは何もないことに注意してください。

于 2012-08-23T13:53:06.343 に答える
2

プロトタイプを介してjQueryオブジェクトを拡張したいようです(別名、jQueryプラグインを記述します)。これは、jQuery 関数 ( ) を呼び出して作成されたすべての新しいオブジェクト$(selector/DOM element)がこのメソッドを持つことを意味します。

非常に簡単な例を次に示します。

$.fn.myFunction = function () {
    alert('it works');
};

デモ

于 2012-08-23T13:59:55.443 に答える