基本JQuery:加载后执行插件操作?

时间:2012-04-18 11:54:46

标签: jquery

我很惭愧地问这么明显的事情,但我失去了很多时间,我找不到解决方案......我在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)引用了文档,而不是绑定元素!

我该如何解决?

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

2 个答案:

答案 0 :(得分:2)

如果将thedoWordCount函数设置为对象的方法。在做这种事情的时候我总是google jquery插件模式。我总是在这篇文章结束: http://www.learningjquery.com/2007/10/a-plugin-development-pattern

我认为应该帮助你做你想做的事。我想你想暴露你的thedoWordCount函数。

答案 1 :(得分:2)

尝试更改插件的最后几行

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

我更喜欢使用.triggerHandler(),但这种方法并不总是合适的,因为它只会影响第一个匹配的元素as documentation states(所以如果您只选择了一个元素,它就可以了)