Страницы

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

понедельник, 23 декабря 2019 г.

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

#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() { ... });

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

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