и браузер успешно получает этот скрипт. Теперь у меня есть обычное представление, которое наследуется от site.master, в котором есть немного jquery, вызывающего плагин movingBoxes.
Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Uncaught TypeError: Object #‹Object› не имеет метода 'movingBoxes'

Автор вопроса: Collin O'ConnorОтветов: 10

Я пытаюсь использовать плагин movingBoxes с моим сайтом asp.net mvc, и он не работает (очевидно). У меня есть movingboxes.js, импортированный в мой тег head в site.master, например

    <script src="<%: Url.Content("~/Scripts/jquery.movingboxes.js")%>" type="text/javascript"></script>

и браузер успешно получает этот скрипт. Теперь у меня есть обычное представление, которое наследуется от site.master, в котором есть немного jquery, вызывающего плагин movingBoxes.

<script type="text/javascript">
    $(document).ready(function () {
        $($('#slider-one'));
        $('#slider-one').movingBoxes({
            startPanel: 1,
            panelWidth: .5,
            fixedHeight: false
        });

        $('#slider-two').movingBoxes({
            startPanel: 1,
            panelWidth: .5,
            fixedHeight: false
        });
    });
</script>

Когда я просматриваю страницу. Все работает нормально (включая другие вещи jquery), кроме этого плагина, и я получаю эту ошибку

введите здесь описание изображения

А вот и описание ошибки введите здесь описание изображения

Любая помощь будет оценена

ИЗМЕНИТЬ

Итак, видимо, у меня было это:

    <script type="text/javascript" src="../../Scripts/jquery-1.4.1.js" />
    <script src="<%: Url.Content("~/Scripts/jquery.movingboxes.js")%>" type="text/javascript"></script>

И теперь он работает, изменив его на это:

    <script type="text/javascript" src="../../Scripts/jquery-1.4.1.js"></script>
    <script src="<%: Url.Content("~/Scripts/jquery.movingboxes.js")%>" type="text/javascript"></script>
  • Я не вижу ничего плохого (за исключением того, что я не знаю, что ` $($('#slider-one'));` висит там вверху). Возможно, проверьте, правильно ли включен файл. Haochi 18.03.2011
  • Не могли бы вы подтвердить, что файл javascript jQuery загружается перед файлом movingbox? Если они находятся в неправильной последовательности, вы получите что-то вроде ошибки, которую вы видите. Neil 18.03.2011
  • Раньше у него было настроено оповещение с $('#slider-one') внутри него, вот откуда взялся висячий селектор вверху. Hacknightly 18.03.2011
  • @Neil, ваше предложение помогло мне с некоторыми скриптами, которые позже не работали. Спасибо Collin O'Connor 19.03.2011

javascriptjquerytypeerror

Ответы

Ответ 1 · рейтинг 40 · Hacknightly

Есть несколько вещей, которые вы можете попробовать, чтобы заставить это работать.

  1. Будьте АБСОЛЮТНО уверены, что ваш скрипт загружается на страницу. Один из способов проверить это - использовать вкладку "Источники" в отладчике Chrome и выполнить поиск файла.

  2. Убедитесь, что вы включили скрипт после того, как вы включили jQuery, так как он, безусловно, зависит от этого.

Кроме этого, я проверил API, и, насколько я вижу, вы определенно все делаете правильно. Удачи друг!

РЕДАКТИРОВАТЬ: Убедитесь, что вы закрыли тег сценария. Ниже приведен ответ, который указывает на то, что это решение.

Ответ 2 · рейтинг 14 · SaschaM78

Имейте в виду, что только некоторые элементы могут быть самозакрывающимися, большинство других необходимо закрыть с помощью добавления явного конечного тега. В приведенном выше случае первый тег скрипта не был закрыт должным образом, конечный тег скрипта второго скрипта закрыл раздел скрипта, в результате чего в качестве внешнего источника скрипта был загружен только первый скрипт, а второй скрипт был проигнорирован.

Подробнее о том, какие теги могут быть самозакрывающимися, см. в черновиках W3C для HTML5 (хотя определение не отличалось в более ранних HTML-версиях):

http://www.w3.org/TR/html5/syntax.html#end-tags (8.1.2.1, пункт 6)

Ответ 3 · рейтинг 4 · racl101

У меня была такая же проблема с плагином jquery Responsive Slides (http://responsive-slides.viljamis.com/).

Я исправил это, не используя короткую версию jQuery $(".rslides").responsiveSlides(.., а длинную версию: jQuery(".rslides").responsiveSlides(...

Поэтому переключение с $ на jQuery, чтобы не вызывать конфликтов, или использование надлежащего режима jQuery без конфликтов (http://api.jquery.com/jQuery.noConflict/)

Ответ 4 · рейтинг 4 · Gazu

У меня такая же проблема. Я изменил порядок скриптов в части head, и у меня это сработало. Каждый скрипт, который нужен плагину, должен быть рядом.

Например:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $('#slider').cycle({
            fx: 'fade'
        });
    });
</script>

Ответ 5 · рейтинг 2 · Valamas

Когда у меня возникла эта проблема, это было потому, что я пытался использовать реальную функцию вместо анонимной функции.

Неправильно:

$(document).on('change', "#MyId", MyFunction());

Правильный

$(document).on('change', "#MyId", MyFunction);

или также исправить, и если вам нужно передать объект события или другие параметры.

$(document).on('change', "#MyId", function(e) { MyFunction(e); });

Ответ 6 · рейтинг 1 · Victor Augusto

На самом деле я думаю, что вы скачали только часть скрипта. Попробуйте установить флажок "Ядро" перед загрузкой всего скрипта на сайте jquery.

Ответ 7 · рейтинг 1 · Aakash Agrawal

у меня была та же проблема, я дважды связал jquery. Более поздняя версия перезаписывала мой плагин.

Я только что удалил более поздний jquery, он начал работать.

Ответ 8 · рейтинг 1 · Serhii Matrunchyk

У меня тоже была такая проблема, потому что я использовал тег IMG и тег UL.

Попробуйте применить плагин "уголки" к таким элементам, как $('#mydiv').corner(), $('#myspan').corner(), $('#myp').corner(), но НЕ к $('#img').corner()! Это правило связано с добавлением дочерних DIV в указанный элемент для эмуляции эффекта скругления углов. Как мы знаем, элемент IMG не может иметь дочерних элементов.

Я решил эту проблему, поместив необходимый элемент в div и изменив IMG на DIV с помощью свойства background: CSS.

Удачи!

Ответ 9 · Rob Erskine

Также рекомендуется убедиться, что вы используете правильную версию jQuery. Недавно я приобрел проект с использованием jQuery 1.6.2, который не работал с плагином hoverIntent. Обновление его до самой последней версии исправило это для меня.

Ответ 10 · vikingben

Я обнаружил, что использую селектор для своего div rendorTo, который я использовал для рендеринга графика столбца highcharts. По-видимому, он добавляет селектор для вас, поэтому вам просто нужно передать идентификатор.

renderTo: $('#myGraphDiv') в строку 'myGraphDiv', это исправило ошибку, надеюсь, это поможет кому-то еще.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы