2016-10-01 3 views
0

Существует page, над которым я работаю. Когда пользователь прокручивается до вкладок («Существующий рабочий процесс» и «Рабочий процесс KBCT»), я бы хотел изменить вкладку «Существующий рабочий процесс» на «рабочий процесс KBCT» с 5-секундной задержкой. Это необходимо выполнить только тогда, когда вкладки видны (пользователь прокручивается в эту позицию).Chrome игнорирует мой оператор if

Вот код

tabs = jQuery('#kbct-tabs'); 
kbctTab = tabs.find('.tab:last-child'); 

if (tabs.css('visibility') === 'visible') { 
    setTimeout(function() { 
    kbctTab.click(); 
    console.log('executed'); 
    }, 5000); 
} 

И я не знаю, что случилось с ним, если в частичном заявлении. Это работает, но не так, как предполагается. Кажется, браузер игнорирует оператор if и начинает отсчет через 5 секунд после загрузки страницы, а не когда пользователь прокручивается на вкладки. НО, когда я пишу этот оператор if в Chrome Console, он работает так, как предполагается.

Адрес screenshot.

Не могли бы вы рассказать мне, что не так?

+6

свойство видимости не зависит от прокрутки пользователя – Mayday

+2

обеспечивает [mcve]. Ссылка на живую страницу будет гнить, делая этот вопрос бесполезным в будущем – charlietfl

+0

@avramch: вы, вероятно, ищете это http://stackoverflow.com/a/488073/2770274 – Adassko

ответ

2

Ваш код работает на 100%.

Вам просто нужно изменить 2 вещи:

1 - Добавление прослушивателя scroll событий (element.scroll(callback))

2 - Используйте scrollTop свойство для проверки visibily. (element.scrollTop())

var kbctworkflow = function() { 
    var tabs = jQuery('#kbct-tabs'); 
    var kbctTab = tabs.find('.tab:last-child'); 
    if ($(document.body).scrollTop() > tabs.offset().top - 300) { 
     setTimeout(function() { 
     kbctTab.click(); 
     console.log('executed'); 
     }, 1000); 
    } 
    }; 
    $(window).scroll(kbctworkflow); 

DEMO http://jsbin.com/qatice/2/edit?js,output

+0

Не могли бы вы подробнее рассказать об этом? – avramch

+0

Конечно ... обновил ответ с помощью DEMO и рабочего кода. – rafaelcastrocouto

+0

Это работает :) Большое вам спасибо! – avramch

-1

попробовать с помощью селектора JQuery в is.

tabs = jQuery('#kbct-tabs'); 
kbctTab = tabs.find('.tab:last-child'); 

if (tabs.is(':visibile')) { 
    setTimeout(function() { 
    kbctTab.click(); 
    console.log('executed'); 
    }, 5000); 
} 
+0

Не помогло :(Он начинает отсчитываться через 5 секунд после загрузки страницы, а не когда заметки становятся видимыми – avramch

Смежные вопросы