You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义jQuery插件报错:$.myPlugin() is not a function 求助

问题原因与解决方法

你遇到的$.myPlugin is not a function错误,核心原因是插件挂载的位置不对:

  • 你把插件定义在了$.fn对象上,这个对象是用来扩展jQuery DOM元素集合方法的(比如$('.container').myPlugin()这种调用方式)。
  • 但你直接用$.myPlugin()调用,是在全局jQuery对象($)上查找这个方法,自然找不到。

两种解决方式

方式一:修改插件挂载到全局jQuery对象

把插件定义里的$.fn.myPlugin改为$.myPlugin,这样就能直接通过$.myPlugin()调用:

(function($) {
  // 直接挂载到全局$对象上
  $.myPlugin = function() {
    $.ajaxPrefilter(function(options) {
      if (options.crossDomain) {
        options.url = "https://corsproxy.io/?" + options.url;
      }
    });
    return this;
  };
}(jQuery));

方式二:保持插件挂载在$.fn,用元素集合调用

如果坚持用$.fn的方式,需要通过jQuery选中的DOM元素集合来调用,比如:

// 替换原来的$.myPlugin();
$('body').myPlugin();

不过这种方式对你的场景(全局注册ajaxPrefilter)没有意义,更推荐第一种方式。

额外注意点

确保插件注册代码在$.get执行前运行,当前代码中$.myPlugin()是同步执行的,而$(document).ready里的$.get会在DOM加载完成后执行,顺序没问题,无需调整。

内容的提问来源于stack exchange,提问作者LimetaPeta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:30:16