我正在使用JQuery插件进行一些工作,当用户输入时,它会在textarea框中对文本进行倒计时。由于某种原因,该插件无法正常工作。
我是一个合理的JavaScript开发人员,但之前没有构建过插件。我正在尝试调试这个,并弄清楚它为什么不起作用。
该插件将自身描述为使用jQuery 1.3.x和1.4.x进行测试。我必须使用1.7.1。
我已经能够使用alert()
来追踪插件的这一部分 - 我可以看到处理进入了一个证据点,但似乎没有继续进行。或者我可能会误读它,因为我还在学习如何调试jQuery插件。
在代码片段中,我添加了评论,以便我可以alert
从哪里工作,哪些我无法工作。
$.fn.NobleCount = function(c_obj, options) {
var c_settings;
var mc_passed = false;
// if c_obj is not specified, then nothing to do here
if (typeof c_obj == 'string') {
// check for new & valid options
c_settings = $.extend({}, $.fn.NobleCount.settings, options);
// was max_chars passed via options parameter?
if (typeof options != 'undefined') {
mc_passed = ((typeof options.max_chars == 'number') ? true : false);
}
// THIS ALWAYS FIRES
console.log("I am here");
// process all provided objects
this.each(function(){
// THIS NEVER FIRES
console.log("I DON'T SEEM TO EVER EXECUTE");
var $this = $(this);
// attach events to c_obj
attach_nobility($this, c_obj, c_settings, mc_passed);
});
}
return this;
};
attach_nobility
函数中的代码似乎永远不会运行。
从jquery 1.4到jquery 1.7有什么变化使得这项工作有所不同吗?
编辑:这是指向original NobleCount jquery plugin页面
的链接 编辑:我正在调用这个插件:(function() {
$('#how_to_improve_input').NobleCount('#how_to_improve_count');
}).call(this);
答案 0 :(得分:1)
我认为问题不在于插件。我做了一个与你提供的代码模式相同的基本模式。
(function( $ ){
$.fn.foo = function (c_obj, options) {
var c_settings;
var mc_passed = false;
if (typeof c_obj == 'string') {
c_settings = $.extend({}, {a:"xxxx"}, options);
console.log("aaaa");
this.each(
function(){
console.log("I DON'T SEEM TO EVER EXECUTE");
var $this = $(this);
}
);
}
return this;
};
})( jQuery );
如果我使用简单的选择器
运行它jQuery("div").foo("asdf");
我收到大量日志消息,因为它进入每个循环。
如果我这样做
jQuery("sfsdfdiv").foo("asdf");
即使没有元素,它仍然会进入功能。我在控制台中看到“aaaa”。所以你需要看看选择器而不是插件。