Запускать событие jQuery только один раз после совпадения условия
10484 просмотра
5 ответа
Я делаю сайт продукта онлайн, запускаю событие прокрутки, при запуске будет отображаться только 12 элементов, но когда 8-й элемент прокручивается до верха, событие прокрутки должно запускаться только один раз, но оно запускается каждый раз, когда я прокручиваю вниз, пожалуйста, помогите , Вот мой код:
var navigation_offset_top = $('.prods-list li:nth-child(4)').offset().top;
$(window).on("scroll",function(){
var scroll_top = $(window).scrollTop(); // current vertical position from the top
// if scrolled more than the navigation, change its position to fixed to stick to top, otherwise change it back to relative
if (scroll_top > sticky_navigation_offset_top)
{
console.log("Hi");
}
});
Автор: Bharat Soni
Источник
Размещён: 12.11.2019 09:41
Ответы (5)
5 плюса
Используйте on()
и off()
, и отсоедините обработчик событий, когда прокрутка достигнет нужной точки:
var navigation_offset_top = $('.prods-list li:nth-child(4)').offset().top;
$(window).on("scroll", doScroll);
function doScroll() {
var scroll_top = $(window).scrollTop();
if (scroll_top > sticky_navigation_offset_top) {
console.log("Hi");
$(window).off('scroll', doScroll);
}
});
Автор: adeneo
Размещён: 26.03.2013 12:39
4 плюса
Я думаю, что вам нужен .one метод
$(window).one("scroll",function(){
var scroll_top = $(window).scrollTop(); // current vertical position from the top
// if scrolled more than the navigation, change its position to fixed to stick to top, otherwise change it back to relative
if (scroll_top > sticky_navigation_offset_top)
{
console.log("Hi");
}
});
Вы можете узнать больше здесь: http://api.jquery.com/one/
Автор: tassiodias Размещён: 26.03.2013 12:413 плюса
Позвоните, unbind()
чтобы открепить событие от объекта.
$(window).on("scroll",function(){
var scroll_top = $(window).scrollTop(); // current vertical position from the top
// if scrolled more than the navigation, change its position to fixed to stick to top, otherwise change it back to relative
if (scroll_top > sticky_navigation_offset_top)
{
console.log("Hi");
}
$(this).unbind("scroll");
});
Автор: Daniel Imms
Размещён: 26.03.2013 12:37
1 плюс
Вы можете отменить привязку события после завершения.
подобно $(this).unbind("scroll);
-1 плюса
var thisHash = window.location.hash;
jQuery(document).ready(function() {
if(window.location.hash) {
jQuery.fancybox(thisHash, {
padding: 20
// more API options
});
}
});
Это даже лучше, потому что вам не нужна кнопка для запуска fancybox. А с предыдущим кодом я не смог вставить форму в fancybox, потому что каждый раз, когда я щелкал внутри формы, она перезапускала fancybox.
Автор: Francis Perron Размещён: 29.04.2015 12:08Вопросы из категории :
- jquery Прокрутка переполненных DIV с помощью JavaScript
- jquery Экранирование строк HTML с помощью jQuery
- jquery Как сравнить HTML-сущность с JQuery
- jquery Есть ли функция "существует" для jQuery?
- jquery Как удалить все параметры в окне выбора, а затем добавить один вариант и выбрать его с помощью jQuery?
- jquery Получение идентификатора элемента, который вызвал событие
- jquery Как получить результат из модального диалога в JQuery
- jquery Удалите все классы, начинающиеся с определенной строки.
- jquery Как мне остановить эффект в jQuery
- jquery Как показать загрузочный счетчик в jQuery?
- html Определить часовой пояс пользователя
- html Как определить, какой из указанных шрифтов был использован на веб-странице?
- html Как мне дать моим веб-сайтам значок для iPhone?
- html Как отключить автозаполнение браузера в поле веб-формы / теге ввода?
- html Как автоматически изменить размер текстовой области с помощью Prototype?
- html Как вы можете настроить номера в упорядоченном списке?
- html Как поместить пробел перед текстом опции в элементе выбора HTML?
- html Есть ли HTML напротив <noscript>?
- html Как я могу найти неиспользуемые изображения и стили CSS на веб-сайте?