2012-03-19 10 views
2

Jqueryでいくつかの関数を作成しています。 でも問題があります。Jqueryで関数を作成する

function fader(elm,delaytime) { 
    elm.each(function(index){ 
     $(this).css('visibility','visible').delay(delaytime*index); 
     $(this).fadeIn(1500); 
    }); 
} 
fader($('.subImgs').children(),200); 

これは良かったし、もっと欲しかった。

$.fn.fader2 = function(elm,delaytime) { 
    elm.each(function(index){ 
     $(this).css('visibility','visible').delay(delaytime*index); 
     $(this).fadeIn(1500); 
    }); 
} 

$('.subImgs').children().fader2(200); 

それは動作しません。私は何かが違っていたが、それを見つけることができなかったことを知っている 誰でも私を助けることができますか?

+3

の両方を可能にしなければならないがjQueryプラグイン開発の基本を学ぶためのhttp://docs.jquery.com/Plugins/Authoringを見てください。 'elm'の値が' 200'であるため、あなたのコードは動作しません。選択された要素を参照するものではありません。あなたのコメントのために –

+0

ありがとう。私は自分のコードを修正しました:) – aquaism

答えて

1

お試しください:

(function($) { 
    if (!$.myFader) { 
     $.extend({ 
      myFader: function(elm, delaytime) { 
       return elm.each(function(index){ 
        $(this).css('visibility','visible').delay(delaytime*index).fadeIn(1500); 
       }); 
      } 
     }); 
     $.fn.extend({ 
      myFader: function(delaytime) { 
       return $.myFader($(this), delaytime); 
      } 
     }); 
    } 
})(jQuery); 

これは

$.myFader($('.subImgs').children(),200); 

$('.subImgs').children().myFader(200); 
+0

私はこのような方法が知られていませんでした。どうもありがとうございました。 – aquaism

+0

jqueryプラグインを開始する方法についていくつかの洞察があります。詳しくは、[docs](http://docs.jquery.com/Plugins/Authoring) – SpYk3HH

+1

必ずしも '.extend () 'を返します。実際、 '.extend()'は '$ .fn.method = function(){}'というより遅いです。 また、 '$ .fn.myFader'は' $(this) 'は必要ありません。 'this'はjQueryオブジェクトを参照するため、' this'が必要です。 –

2

あなたの機能は、おそらく次のようになります。

$.fn.fader2 = function(delaytime) { 
    return this.each(function(index){ 
     $(this).css('visibility','visible').delay(delaytime*index).fadeIn(1500); 
    }); 
} 

の作業フィドル(より良い可視性のためのslighty異なるコード):http://docs.jquery.com/Plugins/Authoring

http://jsfiddle.net/2HMWF/

をそのトピックに大きなについては、上記のコメントからのリンクを参照してください。

+1

あなたの助けをありがとう。短いと完璧! ご意見ありがとうございます。ドコモは本当に私を助けます。 – aquaism

関連する問題