2012-04-18 6 views
1

私はこのような明白なことを尋ねるのはかなり恥ずかしいですが、私はそれで多くの時間を失って、解決策を見つけることができません...私は入力の単語を数える、単語カウンタプラグインをJQueryで実装しています各キーストロークの要素、およびその隣のdivでそれらを示しています。基本はJQuery:ロード後にプラグインアクションを実行しますか?

私のプラグインは、次のようにロードされます

$(document).ready(function(){ 
    $("#myOrigin").wordcounter({thresholdError : 65}); 
}); 

プラグインは次のように構成されています。これは完璧に動作

(function($) { 
    $.fn.wordcounter = function(options) { 
    var settings = { /* settings */ }; 

    if (options) { jQuery.extend(settings, options); } 

    doWordCount = function() { 
    var l = $(this).val().length; 
    // etc... 
    } 

    $(this).keyup(doWordCount); 
    return jQuery(this); 
}; 
})(jQuery); 

しかし、今、私は、ドキュメントがロードされたときに入力テキストを持っている場合は、カウンタが開始されてから、とだけでなく、最初のキー押下後のことを反映しているように、アクションが、実行することにしたいと思います。

私は$(this).ready(doWordCount);を試しましたが、doWordCountメソッドを起動しましたが、$(this)はバインドされた要素ではなくドキュメントを参照しています!

どうすれば修正できますか?再び、このような基本的な質問のために申し訳ありません

...あなたがオブジェクトのメソッドとしてthedoWordCount機能を設定した場合

答えて

2

は、私が代わりに使用.triggerHandler()を好むだろうが、それだけで最初に一致した要素as documentation statesに影響を与えるため、このメソッドは常に適切ではない(それが動作しますので、

... 
$(this).keyup(doWordCount).trigger('keyup'); 
return jQuery(this); 

のようなプラグインの最後の行を変更してみてくださいあなたは、1つの要素の選択をしている場合)

+0

それはトリックをしました!ありがとう! – Palantir

2

。この種のものを行うとき、私はいつもjQueryプラグインパターンをグーグル。私はいつもこの記事で終わります: http://www.learningjquery.com/2007/10/a-plugin-development-pattern

私はあなたがしたいことをするのに役立つと思います。私はあなたのthedoWordCount関数を公開したいと思います。

+0

リソースをありがとう!慎重にそれをチェックアウトします:) – Palantir

関連する問題