我很惭愧地问这么明显的事情,但我失去了很多时间,我找不到解决方案......我在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)
引用了文档,而不是绑定元素!
我该如何解决?
再次抱歉这些基本问题......
答案 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(所以如果您只选择了一个元素,它就可以了)