Jquery无法在回调函数中访问$(this)
我正在创建一个插件,但它无法访问 $(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
。 定义或代码有问题吗?任何替代建议也会有帮助
I am creating a plugin and it cannot access $(this). A simple overview of my plugin is
(function($){
$.fn.myPlugin= function(options, callback) {
return this.each(function(){
$(this).click(function(){
// some plugin works ..
callback();
});
});
};
})(jQuery);
Then i attached my plugin to a element like
$('p').myPlugin({
// Some options
}, function(){
alert('first test');
alert($(this).text());
});
Here when the element p is clicked, i get the first alert, but i didn't get the 2nd alert.
The callback function is called, but unable to access this
.
Is there any problem with the defining or with code ? any alternative suggestion will also be helpful
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 < 而不是
callback();
code>.apply() 为其提供正确的上下文(否则它是window
),如下所示:您可以在此处查看更新/工作版本。
为了在这里获得更完整的概述,如果您想要该回调,您可以传递更多参数,例如,如果您想让
选项
可用,您可以这样做:然后像这样调用它:
您可以在这里尝试一下,只需添加您想要的任何参数即可想要该数组,将使用这些参数调用
callback()
:)Instead of
callback();
, use.apply()
to give it the right context (otherwise it'swindow
), like this:You can see the updated/working version here.
For a more complete overview here, you can pass more arguments if you want to that
callback
, for example if you wanted to make theoptions
available, you could do this:Then call it like this:
You can give that one a try here, just add whatever arguments you want to that array,
callback()
will be called with those arguments :)尼克·克拉弗是对的。但要了解发生了什么,请点击以下链接:
http://howtonode.org/what-is-this
Nick Craver is right. But for understanding what is going on follow this link:
http://howtonode.org/what-is-this
您能否发布一个使用自动完成小部件的完整示例?
这就是我想做的...
...但是 this 返回未定义。目前我正在使用 document.activeElement,但我更喜欢 Nick Craver 的方法。
Can you please post a complete example that uses the autocomplete widget?
Here is what I wanted to do...
...but this returns undefined. For now I am using document.activeElement, but I would prefer Nick Craver's method.