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);which 触发 doWordCount 方法,但它$(this)指的是文档,而不是绑定的元素!

我该如何解决?

再次抱歉这些基本问题......

4

2 回答 2

2

如果您将doWordCount 函数设置为对象的方法。做这种事情时,我总是用谷歌 jquery 插件模式。我总是以这篇文章结尾:http: //www.learningjquery.com/2007/10/a-plugin-development-pattern

我认为这应该可以帮助您做您想做的事情。我想你想公开你的 thedoWordCount 函数。

于 2012-04-18T12:01:46.063 回答
2

尝试像这样更改插件的最后几行

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

我更喜欢使用.triggerHandler(),但这种方法并不总是合适的,因为它只影响文档状态的第一个匹配元素(所以如果你选择了一个元素,它就可以工作)

于 2012-04-18T12:02:32.767 回答