2017-07-06 113 views
1

我想檢查一下jQuery中按下的按鈕。如果按下按鈕,頁面必須向下滾動。如果按鈕沒有按下頁面會顯示一個動畫,並且一旦完成,它必須向下滾動。jQuery如果沒有按下按鈕

現在我有這樣的:

$('#btmmdl').click(function(){ 
    $(this).data('clicked', true); 
}); 

if($('#btmmdl').data('clicked')){ 
    // Scroll down 
} else { 
    // Show animation and scroll down after 9 seconds 
} 

難道我做錯了什麼?

+0

你的'if'語句應該在'setTimeout(function(){},9000);'函數中。 –

+0

@JeffNoel爲什麼9000? – tilz0R

+1

@ tilz0R OP的代碼評論說'//顯示動畫並在9秒後向下滾動 – maxshuty

回答

2

您的問題是click事件執行當時是。你不知道用戶什麼時候點擊按鈕。因此,您必須在回調函數中添加if語句並執行您的任務。

$('#btmmdl').click(function() { 
    $(this).attr('data-clicked', !$(this).attr('data-clicked')); //Toggle status 
    if ($(this).attr('data-clicked')) { 
     // Scroll down 
    } else { 
     // Show animation and scroll down after 9 seconds 
    } 
}); 

每次點擊都會切換模式。第一次單擊將滾動,第二次將顯示動畫,第三次再次滾動等。

0

如果您正在使用CSS3動畫,則可以使用jQuery選擇器來偵聽animationend後發生的向下滾動。

它的要點:

$("#someSelector").bind("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(){ ... }); 

欲瞭解更多信息檢查這真棒計算器答案over here

在這種情況下,您也可以點擊按鈕結束動畫,這也會觸發後面的向下滾動。

有關如何結束動畫check the jQuery finish() method

0

怎麼樣的詳細信息:

$('#btmmdl').mousedown((function(){ 
 
    //SCROLLSDOWN 
 
}); 
 
$('#btmmdl').mouseup((function(){ 
 
    //SHOWSANIMATION 
 
});

0

代碼不會爲了想您所想執行。您需要設置一個超時時間,使其在9000毫秒後關閉,並檢查該點上的按鈕是否已被點擊。

var $btmmdl = $('#btmmdl'); 
 

 
$btmmdl.click(function(){ 
 
    $(this).data('clicked', true); 
 
    // Scroll down 
 
}); 
 

 
//If the button hasn't been clicked after 9 seconds, scroll 
 
setTimeout(function(){ 
 
    if(!$btmmdl.data('clicked')){ 
 
    // Show animation and scroll 
 
    } 
 
}, 9000);

0

我嘗試了很多下方,但最後(通過另一個問題)解決方案的發現,爲我工作的解決方案。

var scroll = setTimeout(function(){ 
    // Show animation and scroll down after 9 seconds 
}, 9000); 

$('#btmmdl').click(function(){ 
     // Scroll down 
     clearTimeout(scroll); 
    }); 

將Timeout作爲var的clearTimeout函數爲我做了,但我沒有意識到這個功能。

感謝您的答案!

相關問題