Не могу заставить работать скрипт jQuery marquee для бегущей строки.
1) Сохраняю файл https://cdn.jsdelivr.net/jquery.marquee/1.4.0/jquery.marquee.min.js и помещаю в hope_zymphonies_theme/includes/marquee
2) в файле темы .libraries.yml создаю вот такую запись:
3) в hope_zymphonies_theme/js/custom.js добавляю:
$('.marquee').marquee({
duration: 7000,
startVisible: true,
duplicated: true
});
});
и оборачиваю этот фрагмент кода вот так:
Drupal.behaviors.hope_zymphonies_theme = {
attach: function (context, settings) {
$(function() {
$('.marquee').marquee({
duration: 7000,
startVisible: true,
duplicated: true
});
});
}
};
})(jQuery);
...этот custom.js прописан в .libraries.yml вот так:
4) в шаблон добавляю html
<div class='marquee' style='overflow:hidden'>bla bla bla</div>
5) Чистка кэша
Не работает! Что делаю не так? Уже второй день не могу сделать простую бегущую строчку. В семёрке с этим таких проблем не было.
В консоли пишет:
Uncaught TypeError: $(...).marquee is not a function
Комментарии
Говорит о том, что он скорее всего не видит jquery.marquee.min.js. Что показывает отладчик в браузере, этот файл подключен на странице?
{{ attach_library('themename/marquee') }} в шаблоне
после {{ attach_library('themename/marquee') }} в шаблоне заработало. Но происходит какое-то безумие. Скрипт почему-то выводит столбцом огромное множество строк с текстов внутри тэга.
Надо once использовать
marquee:
version: 1.x
js:
includes/marquee/jquery.marquee.min.js: {}
dependencies:
- core/jquery
- core/jquery.once
не помогло
Так его ещё в свой скрипт надо вписать, чтобы не вызывалось повторно
да. уже понял. но как использовать не понял. смотрю примеры использования и не могу вкурить как в моём случае once использовать
Drupal.behaviors.hope_zymphonies_theme = {
attach: function (context, settings) {
$(context).find('.marquee').once('marquee').click(function () {
$(function() {
$('.marquee').marquee({
duration: 7000,
startVisible: true,
duplicated: true
});
});
});
}
};
})(jQuery);
что здесь неправильно?
вообще мозг вскипел...там событие click висит. Скопировал из примера. Короч разбираюсь еще
Once сейчас подключается как
- core/once
в десятке да. В девятке 9.5.0 тоже?
В девятке тоже. Причём помимо core/once, есть ещё core/jquery.once, который deprecated
понял. благодарю за ответы
Drupal.behaviors.hope_zymphonies_theme = {
attach: function (context, settings) {
$(function() {
$(context).find('.marquee').once('hope_zymphonies_theme').marquee({
duration: 7000,
startVisible: true,
duplicated: true
});
});
}
};
})(jQuery);
Вот такая конструкция заработала!
Правильно сделал?
Пойдёт))