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的方法