我刚开始为jQuery编写插件。我找到了一个很好的教程如何开始,但我错过了一点。我想为每个元素注册一个独立的插件对象,我需要它们。
这是我得到的代码:
(function($){
var MyPlugin = function(pElement, pOptions)
{
var element = $(pElement);
var object = pElement;
var settings = $.extend({
param: 'defaultValue'
}, pOptions || {});
this.onfocus = function() {
element.val('Focus');
};
this.onblur = function() {
element.val('Blur');
}
// DO I NEED THIS?
object.onfocus = this.onfocus;
object.onblur = this.onblur;
};
$.fn.myplugin = function(options)
{
return this.each(function()
{
var element = $(this);
if (element.data('myplugin')) { return };
var myplugin = new MyPlugin(this, options);
element.data('myplugin', myplugin);
});
};
})(jQuery);
我是否需要将我的公共方法“onfocus”和“onblur”从“this”复制到“object”?还有更好的方法吗?
答案 0 :(得分:1)
为什么不:
object.onfocus = function() {
element.val('Focus');
};
object.onblur = function() {
element.val('Blur');
}
答案 1 :(得分:1)
编写jQuery插件的最佳指南可能是jQuery's own。
jQuery's event system是处理插件事件的最佳方式。如果你正在使用jQuery 1.7+(我推荐,如果可能的话),.on()
和.off()
是你的主力。您不仅可以绑定浏览器事件,例如焦点和模糊,还可以创建完全自定义的事件,例如'iamasuperstar',并使用this.trigger( 'iamasuperstar' )
手动触发它们。
所以你要为你的插件做这样的事情:
element.on( 'focus', function() {} )
element.on( 'blur', function() {} )
......以及你需要的任何其他东西。