【问题标题】:Jquery, 'is not a function', extension-function not workingJquery,'不是函数',扩展功能不起作用
【发布时间】:2013-01-25 18:56:13
【问题描述】:

我在 Firefox 的控制台中收到此错误:

$spinner.setupSpinner is not a function
[Break On This Error]   

$spinner.setupSpinner();

ed247.base.js(第 116 行)

Postliste.aspx 加载这些文件:

jquery-1.9.0.js"
jquery-ui-1.9.0.js
jquery.ui.datepicker-no.js
jquery-scrollTo-min.js
ed247.base.js

ed247.base.js 的摘录:

    jQuery.fn.setupSpinner = function () {
        $(this)
            .ajaxStart(function () {
                $(this).show();
            })
            .ajaxStop(function () {
                $(this).hide();
            })
        ;
        return this;
    };

    // init
    function init() {
        // cache jquery objects
        $item = $(config.ids.item);
        $searchResult = $(config.ids.searchResult);
        $spinner = $(config.ids.spinner);
        $datepicker = $(config.ids.datepicker);
        $todatepicker = $(config.ids.todatepicker);
        $searchButton = $(config.ids.searchButton);
        $searchItemTemplate = $(config.templateids.searchItemTemplate);
        $searchHeaderTemplate = $(config.templateids.searchHeaderTemplate);
        $itemTemplate = $(config.templateids.itemTemplate);
        $attachmentsTemplate = $(config.templateids.attachmentsTemplate);
        $backLinks = $(config.classes.backLinks);
        $checkout = $(config.ids.checkout);


        $backToStep1 = $backLinks.find("li:nth-child(1)");
        $backToStep2 = $backLinks.find("li:nth-child(2)");

        $spinner.setupSpinner();

这是页面的 URL:Link

问题好像是没有找到扩展功能? 我该如何解决?

【问题讨论】:

  • 如何重现此错误?使用 firebug 查看您的网站不会引发错误。
  • 你在哪里设置$spinner?确定是 jQuery 对象吗?
  • @Simon,重现错误:转到网站。按 F5 键。

标签: jquery jquery-ui spinner


【解决方案1】:

您正在加载 jQuery 库两次。当您尝试使用扩展时,它不再存在,因为您已将 jQuery 对象替换为新对象。

【讨论】:

  • 他确实加载了 jQuery 库两次,我没有看到那个。但有一个问题:他在 jQuery 的两个包含之后加载他的脚本。不应该没有后果吗?由于第一个 jQuey 对象被第二个覆盖,然后他扩展了第二个 jQuery 对象?
  • @Simon:不,带有扩展名的脚本是在第一次包含 jQuery 之后加载的。 jQuery 的第二个包含在正文中,因此它在添加扩展之后,但在使用扩展的 ready 事件之前加载。
  • @Guffa,感谢您的回复!我删除了额外的参考。我已经浏览了所有应该加载的文件,但是我找不到 JQuery 的加载位置。现在 JQuery 文件正在使用 spinner 函数加载脚本之后,所以我收到一个 JQuery 错误,因为 JQuery 尚未加载。有什么好的解决方法吗?
  • @AndersBranderud:如果您无法摆脱第二个包含,您可以通过重新排列代码以使用该包含来解决它,或者使用 noConflict 方法来使用两个版本,没有一个覆盖另一个。
  • @AndersBranderud:您可以将代码放在使用实例调用的函数表达式中,这样函数内的代码就会使用该实例:(function($){ ... }(@jquery190));
猜你喜欢
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多