Хобрук: Ваш путь к мастерству в программировании

Ошибка Javascript, Uncaught TypeError Свойство '$' объекта [object Object] не является функцией

Я пытаюсь вставить скрипт в модуль Joomla. Скрипт представляет собой процентный загрузчик на JS. У меня были некоторые проблемы с другим js, но мне наконец удалось их решить.

Ошибка, которую я получаю:

Uncaught TypeError: свойство '$' объекта [object Object] не является функцией (анонимная функция)

Я пытаюсь импортировать плагин Percentage Loader jQuery

И код js:

$(function() {
  var $topLoader = $("#dttopLoader").percentageLoader({width: 256, height: 256, controllable : true, progress : 0.5, onProgressUpdate : function(val) {
      $topLoader.setValue(Math.round(val * 100.0));
    }});

  var topLoaderRunning = false;
  $("#dtanimateButton").click(function() {
    if (topLoaderRunning) {
      return;
    }
    topLoaderRunning = true;
    $topLoader.setProgress(0);
    $topLoader.setValue('0kb');
    var kb = 0;
    var totalKb = 999;

    var animateFunc = function() {
      kb += 17;
      $topLoader.setProgress(kb / totalKb);
      $topLoader.setValue(kb.toString() + 'kb');

      if (kb < totalKb) {
        setTimeout(animateFunc, 25);
      } else {
        topLoaderRunning = false;
      }
    }

    setTimeout(animateFunc, 25);

  });
});      

Я попытался изменить первую строку с "$(function()..." на "jquery(function()...", так как я прочитал много тем в stackoverflow, но все еще не могу это исправить.


  • Вы пробовали jQuery(function()... с учетом регистра? 11.04.2013
  • Вы включили jQuery на свой сайт? 11.04.2013
  • Я пробовал с учетом регистра, но все равно та же ошибка. Да, jQuery уже включен. 11.04.2013
  • @ManolisC.: Питти Зак удалил свой ответ, и я тоже немного ошибся с синтаксисом, поэтому я удалил свой. Можете ли вы опубликовать, что сработало для вас в конце, пожалуйста, чтобы у нас был хороший ответ? Я думаю, что это было бы очень полезно для будущих пользователей. Вы также можете принять свои собственные ответы после некоторого периода ожидания. 11.04.2013
  • @François: Я предполагаю, что в конечном итоге сработало jQuery(function($) {...}); (или более длинный эквивалент). Ключевым здесь является передача $ в качестве первого аргумента. Хотя ОП утверждал, что пытался использовать jQuery, они, вероятно, не меняли каждое вхождение $. Вы должны восстановить свой ответ и просто удалить свое редактирование. 11.04.2013
  • Как насчет порядка загрузки/вызова ваших скриптов? Загружается ли jquery перед этим плагином и выполняется ли после того, как dom готов (при необходимости)? 11.04.2013
  • Что-то может принимать переменную $ перед jQuery. 11.04.2013
  • @FelixKling: я отменил последнее редактирование и восстановил ответ. Я не знаю сейчас, действительно ли это заставило его работать в конце или нет. Раньше мне никогда не приходилось работать с jQuery в режиме отсутствия конфликтов, поэтому я не уверен на 100%. Спасибо за ваш отзыв. 11.04.2013

Ответы:


1

Похоже, что аналогичная проблема возникает в это сообщение SO здесь, но в WordPress.

Вы сказали, что используете Joomla. Joomla может также включать загруженную библиотеку jQuery в режиме «без конфликтов», и, возможно, можно применить то же решение.

Попробуйте заменить это:

$(function() {

С этим:

jQuery(document).ready(function ($) {
11.04.2013
  • Или просто jQuery(function($) { 11.04.2013
  • @ZacharyKniebel Теперь это работает!! Просто добавил (jQuery) в конце, и теперь он отображается! Извините, но я здесь новенький и не могу найти ответ Закари. Франсуа, это тоже работает! Спасибо!! 11.04.2013
  • Нет, второй аргумент будет просто проигнорирован. Это вообще не должно иметь значения. 11.04.2013
  • @ManolisC.: Я отменил свое последнее редактирование, так как это только добавило путаницы. Дайте мне знать, если это приемлемо сейчас. 11.04.2013
  • Новые материалы

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

    Что в лицо
    Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

    Почему шаблоны проектирования и почему нет?
    Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

    Создание дизайна обуви с помощью машинного обучения
    Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

    GraalVM в 2022 году: итоги года
    2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..