#javascript #jquery
Есть общий файл (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 подгружается раньше, чем вызов функции. Что я делаю не так?
Ответы
Ответ 1
Когда функция объявлена внутри 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() { ... });
Комментариев нет:
Отправить комментарий