2012-04-18 36 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)引用文档,而不是绑定元素!

我该如何解决?

再为这样的基本问题对不起......

回答

2

尝试改变你的插件的最后几行,像这样

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

我宁愿使用.triggerHandler()代替,但这种方法并不总是合适的,因为它不仅影响第一个匹配元素as documentation states(所以它的工作原理如果你只有一个元素的选择)

+0

它做到了!谢谢! – Palantir 2012-04-18 12:07:27

2

如果你设置了thedoWordCount功能了作为一个对象的方法。我总是在做这种事情时使用Google jquery插件模式。我总是最终在这篇文章: http://www.learningjquery.com/2007/10/a-plugin-development-pattern

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

+0

感谢您的资源!将仔细检查它:) – Palantir 2012-04-18 12:07:56