Страницы

Поиск по вопросам

среда, 27 февраля 2019 г.

Вызов функции из другого файла

Есть общий файл (main.js) для всех скриптов, в нём прописана функция для кнопки "наверх":
function button_top_right (n) { var top_button = $("#main").offset().top; $("#top_right").hide(); $(window).scroll(function () { if ($(this).scrollTop() > top_button + n) { $('#top_right').fadeIn().addClass("fixed"); } else { $('#top_right').fadeOut(); } }); }; button_top_right (1500);
Для одной страницы мне надо вызвать эту функцию с другим параметром n Добавляю скрипт на эту страницу:
$(document).ready(function () { button_top_right (100); });
Скрипт не срабатывает с ошибкой:
Uncaught ReferenceError: button_top_right is not defined
main.js подгружается раньше, чем вызов функции. Что я делаю не так?


Ответ

Когда функция объявлена внутри document.ready, обратиться к ней извне не получится. Достаточно вынести саму функцию, а её вызовы оставить внутри document.ready
function button_top_right(n) { ... }; $(document).ready(function() { button_top_right(1500); });
Так как внутри функции button_top_right при каждом вызове функции добавляется обработчик события scroll для window, имеет смысл убирать предыдущий обработчик либо перед вызовом функции, либо внутри функции перед добавлением нового:
$(window).off("scroll").on("scroll", function() { ... });

Комментариев нет:

Отправить комментарий