2016-10-01 115 views
0

有一個page我正在處理。當用戶向下滾動到標籤頁(「現有工作流程」和「KBCT工作流程」)時,我想將「現有工作流程」選項卡更改爲僅具有5秒延遲的「KBCT工作流程」標籤。只有當選項卡可見時(用戶滾動到該位置),才需要執行此操作。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語句。它有效,但不是它應該如何。看起來瀏覽器忽略了if語句,並且在頁面加載後5秒開始計數,而不是當用戶滾動到標籤時。但是當我編寫Chrome控制檯中的if語句時,它的工作方式與它應該的相同。

這是screenshot

你能告訴我什麼是錯?

+6

visibility property不依賴於用戶滾動 – Mayday

+2

提供[mcve]。鏈接到實時頁面將腐爛使這個問題在未來 – charlietfl

+0

@avramch:你可能正在尋找這個http://stackoverflow.com/a/488073/2770274 – Adassko

回答

2

您的代碼正在工作100%。

你只需要改變兩件事情:

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

It works :)非常感謝你! – 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