1

私はそのような明白なことを尋ねることを非常に恥ずかしく思いますが、私はそれで多くの時間を失い、解決策を見つけることができません...キーストロークごとに入力要素の単語をカウントするワードカウンタープラグインをJQueryに実装しています、その横の div に表示します。

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

$(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)が、バインドされた要素ではなく、ドキュメントを参照しています。

どうすれば修正できますか?

このような基本的な質問で申し訳ありません...

4

2 に答える 2

2

オブジェクトのメソッドとして doWordCount 関数を設定した場合。この種のことをするとき、私はいつも jquery プラグイン パターンをググります。私はいつもこの記事に行き着きます: http://www.learningjquery.com/2007/10/a-plugin-development-pattern

あなたがやりたいことをするのに役立つはずだと思います。doWordCount 関数を公開したいと思います。

于 2012-04-18T12:01:46.063 に答える
2

プラグインの最後の行を次のように変更してみてください

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

.triggerHandler()代わりに使用することをお勧めしますが、この方法は、ドキュメントの状態として最初に一致した要素にのみ影響するため、常に適しているとは限りません(したがって、正確に 1 つの要素を選択している場合に機能します)。

于 2012-04-18T12:02:32.767 に答える