Jquery无法在回调函数中访问$(this)

2024-01-01

我正在创建一个插件,但它无法访问 $(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(使用前将#替换为@)

Jquery无法在回调函数中访问$(this) 的相关文章

随机推荐

  • Node.js 多进程日志记录

    我现在正在做一个基于集群的node js项目 我陷入了日志记录的困境 经过一番研究后 我找到了一个解决方案 就这个 我不知道这是否是一个好主意 想法是这样的 只有master进程可以写入日志文件 如果当前进程是worker 那么它会向mas
  • LINQ 标识函数

    只是关于 LINQ 语法的一点小问题 我正在压平一个IEnumerable
  • PHP OCI、Oracle 和默认数字格式

    当我使用 PHP OCI 从 Oracle 数据库执行提取时 小于 1 的数字显示为 XXXXXX e g 249999 有没有办法将其设置为0 XXXXXX或任何其他格式 无需修改每个要使用的查询to char 明确地 也许通过一些会话参
  • asp .net 2.0 上的最大查询字符串长度

    我正在研究 ASP NET 版本 2 0 和 IIS 6 我通过调用其 URL 并向其传递查询字符串来从主页调用弹出的 aspx 页面 对于特定情况 我的查询字符串的长度超过 2000 个字符 因此 弹出屏幕第一次打开时效果很好 但每当该弹
  • 当有超过 n 个查询时,如何记录“show processlist”?

    我们的 mysql 进程有时会积压并且进程开始排队 我想通过在缓慢的时间记录进程列表来调试发生这种情况的时间和原因 我想跑show full processlist 通过 cron 作业并将输出保存到文本文件 如果有多个 50返回行 你能为
  • UICollectionView - 图像是随机设置的

    我在我的应用程序中使用collectionView 我正在 didSelect 委托中为单元格背景视图设置图像 但是当我选择一个单元格索引路径时 图像将设置为 3 个单元格索引路径 当我滚动 collectionView 时 图像会随机更改
  • JavaFX 2.x:将鼠标单击坐标转换为 XYChart 轴值

    在 JavaFX 2 x 中 我使用 XYChart 并且希望当鼠标在图表上移动时显示图表的 X Y 轴坐标值 我在图表上设置了一个事件处理程序来处理 setOnMouseMoved 事件 但是 我不确定如何将 MouseEvent 的 g
  • MIPS汇编中$是什么意思?

    什么是 在 MIPS 汇编语言中是什么意思 举个例子 Add 28 R4 R3 表达式中的美元符号是什么 在汇编程序中 符号 通常表示两种不同的含义 数字前缀表示该数字以十六进制书写 本身是一个数值表达式 其计算结果为 当前位置 即组装下一
  • 如何使用 boto3 客户端删除仍然可用的 HIT

    我有一些已发布的 HIT 可供工作人员使用 现在我想删除它们 尽管它们还没有被工作人员完成 根据此文档 这是不可能的 https boto3 amazonaws com v1 documentation api latest referen
  • React 功能组件:如何从外部访问变量 useEffect()

    我已经简化了下面的问题 我正在使用useEffect确保 dom 在选择项目之前已渲染 这非常有效 并且在尝试获取这些元素之前不需要超时 但是如果我想在另一个组件中使用这些值 如何访问它们 The printAll 函数找不到变量 impo
  • Java 泛型方法签名中的类型不匹配

    我有一个Executor调用接口实例的类IService
  • 使用 Android 的 BROTHER SDK 通过 WIFI 打印时出现 ERROR_WRONG_LABEL

    我有 Brother QL 710W 标签打印机 我尝试使用 Brother 的 SDK 通过 WIFI 进行打印 但每次都会收到 ERROR WRONG LABEL 错误 我努力了 尝试使用 Android Brother Sdk 进行标
  • 来自:“1 小时前”,至:timedelta + 准确度

    有没有 逆转人性化 时代的功能 例如 给定 字符串 1分钟前 7小时前 5天前 2个月前 可以返回 对伪代码表示歉意 datetime now 时间增量 1 分钟 精度 60 秒 datetime now 时间增量 7 小时 精度 1 小时
  • 解决歧义

    我有一个带有 3 个创建方法重载的控制器 public ActionResult Create public ActionResult Create string Skill int ProductId public ActionResul
  • 如何使用 C++ 将网站设置为 IE、Firefox、Chrome 和 Safari 的主页?

    有没有办法通过 C 或 C 将 google com 这样的网站设置为主页 如何 不确定你的动机是什么 但我不认为这是我希望我的系统上的任何代码从我的手下出发的事情 这听起来像是广告软件 恶意软件会对您的祖父母所做的事情 一旦设置 他们就不
  • 在 localhost 中使用 facebook 登录

    我正在做一个项目 需要使用facebook API作为用户登录 该文档清楚地说明了使用facebook登录的登录按钮的用法 但是 当我在本地主机上测试该按钮时 它没有给我任何信息 没有错误页面 没有弹出窗口 我正在使用 xampp 进行本地
  • 如何指定特定时区的“今天开始”?

    我有一个带有 时间戳与时区 列的表 我想找到时间戳早于今天的所有行 其中 今天 是在特定时区确定的 我知道如何使用at time zone将文字时间戳解释为处于某个特定时区 并且我知道如何使用date trunc以获得这一天的开始 但我不知
  • 如何在 HTML 中调用外部 JavaScript 函数

    我有一小块代码似乎无法工作 我正在构建一个网站并第一次使用 JavaScript 我的 JavaScript 代码位于外部文件 Marq Msg js 中 如下所示 var Messages new Array Messages 0 Thi
  • javascript中的赋值问题[重复]

    这个问题在这里已经有答案了 这是我正在尝试的代码 我唯一的问题是为什么我的代码没有在 projectAreaContextId 中分配 y 的值 编辑1 我已经更正了一些内容 var xhttp new XMLHttpRequest xht
  • Jquery无法在回调函数中访问$(this)

    我正在创建一个插件 但它无法访问 this 我的插件的简单概述是 function fn myPlugin function options callback return this each function this click fun