Есть общий файл (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() {
...
});
Комментариев нет:
Отправить комментарий