我正在尝试使用jquery-boilerplate-v3.1开发插件,并在“this”和“$(this)”之间混淆
in the plugin
...
$.fn[pluginName] = function ( options ) {
//alert($(this).toSource());
return this.each(function () {
if (!$.data(this, 'plugin_' + pluginName)) {
$.data(this, 'plugin_' + pluginName, new Plugin( this, options ));
}
});
};
似乎new Plugin(this, options)
没有返回Plugin.prototype上下文中的元素。
相反,我已将其修改为Plugin($(this), options)
。
eg.
$(function(){
$('#container').myPlugin();
});
不使用$(this)作为参数,我无法访问插件中的this.element,.toSource()返回空对象({})
。
我是通过修改为$(this)来做正确的方法,还是如何使用this
参数访问#container。
TIA。
答案 0 :(得分:2)
在插件中,this
指的是你应用插件的jQuery对象,但在this.each()
的回调中,this
指的是jQuery对象中的每个单独的DOM元素
所以,是的,你需要$(this)
来获取一个在循环中包含该元素的jQuery对象。