Drupal.behaviors. Как туда записать js-код

Главные вкладки

Аватар пользователя Лала Лала 27 января 2020 в 0:10

Здравствуйте.
Пытаюсь создать параллакс для отдельного блока. На html всё работает замечательно.
Создала тип блока.
Создала отдельные шаблоны для типа блока и для templates\field\field--text-with-summary.html.twig
В последнем вывела только div с классом wrap.

js-код пишу в пользовательском js-файле. В D8 не знаю как правильно записать. Поняла, что нужно использовать Drupal.behaviors, но как-то не получается.

Мой код:

Drupal.behaviors.parallaxWeb = {
  attach: function (context, settings) {

    $(window).scroll(function () {
      var st = $(this).scrollTop();

      $(".wrap").css({
        "transform": "translate(0%, " + st + "%"
      });
    });
  }
};

В Mozilla ошибка:

TypeError: $ is not a function
global.js:1:521
    attach http://ator.ru:3000/themes/custom/maio/js/global.js?v=8.8.1:1
    attachBehaviors http://ator.ru:3000/core/misc/drupal.js?v=8.8.1:25
    forEach self-hosted:235
    attachBehaviors http://ator.ru:3000/core/misc/drupal.js?v=8.8.1:22
    <анонимный> http://ator.ru:3000/core/misc/drupal.init.js?v=8.8.1:28
    listener http://ator.ru:3000/core/misc/drupal.init.js?v=8.8.1:20

В файле библиотек подключены зависимости:

 
  js/global.js: {}
  dependencies:
    - core/jquery
    - core/jquery.once

Лучший ответ

Аватар пользователя ivnish ivnish 27 января 2020 в 0:17
1
(function ($, Drupal) {
  Drupal.behaviors.parallaxWeb = {
    attach: function (context, settings) {
      // Ваш код
    }
  };
})(jQuery, Drupal);

Вот так должно быть

Комментарии

Аватар пользователя ivnish ivnish 27 января 2020 в 0:17
1
(function ($, Drupal) {
  Drupal.behaviors.parallaxWeb = {
    attach: function (context, settings) {
      // Ваш код
    }
  };
})(jQuery, Drupal);

Вот так должно быть