Jquery无法在回调函数中访问$(this)
我正在创建一个插件,它无法访问$(此)。下面是对我的插件的简单概述Jquery无法在回调函数中访问$(this),jquery,function,plugins,element,Jquery,Function,Plugins,Element,我正在创建一个插件,它无法访问$(此)。下面是对我的插件的简单概述 (function($){ $.fn.myPlugin= function(options, callback) { return this.each(function(){ $(this).click(function(){ // some plugin works .. callb
(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被单击时,我得到第一个警报,但我没有得到第二个警报
调用了回调函数,但无法访问此。
定义或使用代码有什么问题吗?任何替代建议也将有帮助而不是callback()代码>,用于为其提供正确的上下文(否则它是窗口
),如下所示:
callback.apply(this);
$('p').myPlugin({
thing: "thing1"
}, function(opts){
alert(opts.thing); //thing1
});
要在此处获得更完整的概述,如果要调用回调
,可以传递更多参数,例如,如果要使选项
可用,可以执行以下操作:
(function($){
$.fn.myPlugin= function(options, callback) {
return this.each(function(){
$(this).click(function(){
callback.apply(this, [options]);
});
});
};
})(jQuery);
那么就这样称呼它:
callback.apply(this);
$('p').myPlugin({
thing: "thing1"
}, function(opts){
alert(opts.thing); //thing1
});
,只需将任何参数添加到该数组中,callback()
将使用这些参数调用:)尼克·克雷弗是对的。但要了解发生了什么,请点击以下链接:
您能否发布一个使用自动完成小部件的完整示例
这是我想做的
$('.suggest').autocomplete({
source: function(request, response) {
typ = $(this).getAttr("class").split(" ")[2]
....
…但此返回未定义的。目前我使用的是document.activeElement,但我更喜欢Nick Craver的方法