我正在创建一个插件,但它无法访问 $(this)。我的插件的简单概述是
(function($){
$.fn.myPlugin= function(options, callback) {
return this.each(function(){
$(this).click(function(){
// some plugin works ..
callback();
});
});
};
})(jQuery);
然后我将我的插件附加到一个元素上,例如
$('p').myPlugin({
// Some options
}, function(){
alert('first test');
alert($(this).text());
});
在这里,当单击元素 p 时,我收到第一个警报,但没有收到第二个警报。
回调函数被调用,但无法访问this
。
定义或代码有问题吗?任何替代建议也会有帮助
代替callback();
, use .apply() https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Function/apply给它正确的上下文(否则它是window
), 像这样:
callback.apply(this);
您可以在此处查看更新/工作版本 http://jsfiddle.net/nick_craver/emue3/.
如需更完整的概述,您可以根据需要传递更多参数callback
,例如,如果您想要options
可用,你可以这样做:
(function($){
$.fn.myPlugin= function(options, callback) {
return this.each(function(){
$(this).click(function(){
callback.apply(this, [options]);
});
});
};
})(jQuery);
然后像这样调用它:
$('p').myPlugin({
thing: "thing1"
}, function(opts){
alert(opts.thing); //thing1
});
你可以在这里尝试一下 http://jsfiddle.net/nick_craver/emue3/1/,只需将您想要的任何参数添加到该数组中,callback()
将使用这些参数来调用:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)