Шаблон Wordpress Roots/Sage Uncaught TypeError: $ не является функцией

поэтому я недавно начал изучать WordPress, услышал об этой теме Roots/sage, которая похожа на то, как работают php-фреймворки, такие как larvel, с которыми я больше знаком.

  • Установил тему успешно,
  • Настроил, все работает
  • Browsersync - работает,
  • Создал несколько пользовательских страниц - все работает отлично. Теперь пришло время добавить javascript в файл app.blade.php в папке макетов. Если я правильно понимаю, jquery и javascript уже включены в настройку sage, потому что начальная загрузка работает отлично.

Итак, в файле app.blade.php непосредственно перед концом тега body я добавил этот код, чтобы проверить, действительно ли работает javascript:

    <script type='text/javascript'>
      $(document).ready(function() {
        console.log( "ready!" );
      });
    </script>

  </body>
</html>

В результате я получаю эту ошибку: Uncaught TypeError: $ is not a function Хорошо, поэтому я решил удалить $(document).ready().... буквально осталось только

        <script type='text/javascript'>
            console.log( "ready!" );
        </script>
    
      </body>
    </html>

И это работает отлично!

Включение файла с файлом sages assets/scripts/main.js не должно иметь значения, если jquery/javascript уже включен, я должен иметь возможность запускать случайную функцию js внизу каждой страницы, нет?

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


person Royal    schedule 10.07.2020    source источник
comment
может Как добавить простой скрипт jQuery в WordPress? помочь?   -  person gaetanoM    schedule 10.07.2020
comment
@gaetanoM кажется, что jQuery(document).ready(function($) { console.log(ready!); }); работает точно так же, как просто console.log(готово!); . Я просто не понимаю, почему $(document).ready не работает   -  person Royal    schedule 10.07.2020
comment
Wordpress использует внутри себя знак $. Итак, вам нужно использовать расширенный формат: jQuery   -  person gaetanoM    schedule 10.07.2020


Ответы (1)


Вы можете обернуть его внутри такой функции, чтобы он работал:

( function( $ ) {
    console.log( "ready!" );
}( jQuery ) );

Другой способ — заменить ширину $ словом jQuery:

jQuery(document).ready(function() {
        console.log( "ready!" );
});

Оба решения должны нормально работать в WordPress.

person rank    schedule 10.07.2020