1

jQueryオブジェクトで実行できる関数またはメソッドを作成したいと思います。jsfiddleを参照してください。

$(function() {

    $("#myElem").click(function(){ 
        $(this).myMethod("red");       
    });

    var myMethod = function(myParam){
        var buttonBorder = "2px solid " + myParam;
        $(this).css("border", buttonBorder);
    };

});

最初の問題は、メソッドが期待どおりに機能しないことです。このエラーが発生します:

Uncaught TypeError: Object [object Object] has no method 'myMethod'

2番目の問題(おそらく最初の問題が原因ですか?)は、$(this)inがイベントハンドラーの場合myMethodと同じではないことです。$(this)メソッドがオブジェクトをパラメーターとして明示的に渡さずに取得する方法はありますか?

4

3 に答える 3

2

プラグインを作成する場合は、プラグインを次の場所に追加する必要がありますjQuery.fn

$.fn.myMethod = function(myParam){
    var buttonBorder = "2px solid " + myParam;
    $(this).css("border", buttonBorder);
};

これで、好きなように呼び出すことができthis、適切なコンテキストを参照することもできます。更新されたフィドルを参照してください。

于 2012-10-17T22:49:23.550 に答える
1

関数に固執したい場合は、複数の引数を割り当てることができます。

フィドル

  • 目的の要素
  • 使用する色
 function myMethod(el, color){
    $(el).on('click',function(){
        this.css("border", "2px solid " + color);
    });
 }   
   
 myMethod("#myElem", "red");

ただし、プラグインを作成することをお勧めします。

プラグインバージョン

(function( $ ) {
  $.fn.myMethod = function( arg ) {
      this.on('click',function(){
          $(this).css({border:'2px solid '+ arg });
      });
  };
})( jQuery );

$("#myElem").myMethod('blue');

または、必要に応じて次のようにします。

(function( $ ) {
    $.fn.myMethod = function( arg ) {
          this.css({border:'2px solid '+ arg });
    };
})( jQuery );
    
        
$("#myElem").on('click',function(){
    $(this).myMethod('blue');
});
    
    
于 2012-10-17T22:54:53.973 に答える
0

あなたは$.fn何ですか?

そのようなjQueryにモンキーパッチを適用することはできません。ここで詳細に説明されているfnメソッドを使用する必要があります。

http://docs.jquery.com/Plugins/Authoring

于 2012-10-17T22:56:05.637 に答える