2012-11-29 37 views
3

的jQuery這應該是容易的,但我是一個新手...火兩個事件同時在同一個選擇

我怎樣才能讓節目功能,點擊動畫功能工作爲一體?

function scrollit() { 
    $("#scrollDown").show(); 
    $("#scrollDown").click(function() { 
     $('html,body').animate({scrollTop: $('#scrollDown').offset().top}, 1500); 
    }); 
} 

參見:http://jsfiddle.net/elasticGurl/3r6Jp/4/

什麼是應該發生的是

  1. 按鈕被點擊
  2. 隱藏的div Scrolldown已顯示
  3. 同時爲#2,它也應該同時下調一點

問題是它需要點擊兩次才能向下移動。

回答

2

那是因爲你的點擊功能是隱藏的DIV,而不是在您的按鈕

function scrollit() { 

    $("#scrollDown").show(); 
    $('html,body').animate({scrollTop: $('#scrollDown').offset().top}, {duration:1500, queue:false}); 
}​ 
+0

p.s.我會放棄滾動功能,只需將點擊綁定放到按鈕上 – Koenyn

+0

好吧,我改變了它(同樣的js小提琴URL),但我仍然必須點擊它兩次才能移動。您可以在這裏看到結果:http://jsfiddle.net/elasticGurl/23wKx/4/embedded/result/ – elasticgurl

+0

如何將點擊綁定放到按鈕上? – elasticgurl

2

你只是結合的情況下,點擊你需要太多觸發事件:

function toggleDiv() { 

$("#scrollDown").show().click(function() { 
    $('html,body').animate({scrollTop: $('#scrollDown').offset().top}, 1500); 
}); 
    $("#scrollDown").click(); 
} 
+0

太棒了。謝謝!但是,我如何消除操作中的延遲?如果您注意到,它會在移動div之前等待一段時間。新的與您的代碼:http://jsfiddle.net/elasticGurl/23wKx/2/ – elasticgurl

+0

我建議你刪除點擊事件,只是觸發動畫,它會切換每次點擊紅色的事情: function toggleDiv( ){ $(「#scrollDown」)。show(); $('html,body')。animate({scrollTop:$('#scrollDown')。offset()。top},800); } – Rusty

0

試與jQuery的1.8.2

$(document).on('click','p#scrolltest', function(){ 
    $("div#scrollDown").show('fast', function(){ 
     $('body').animate({ 
      scrollTop: $('#scrollDown').offset().top 
      }, 1500); 
     }); 
}); 

Working Demo

+0

謝謝你,但我實際上需要它向下滾動而不是顯示div。至少這就是它爲我做的。它將在移動設備上,所以當他們點擊按鈕時,頁面會向上滾動顯示錶單。那有意義嗎? – elasticgurl

+0

是不是現在只需點擊一下即可向下滾動?檢查plz – diEcho

+0

在我的屏幕上(你的jfiddle),它只顯示窗體,但不會使窗體向上移動。 – elasticgurl

0

這裏是工作示例:http://jsfiddle.net/FSfRR/1/

var count = 0; 
    $(".checkout_btn").click(function() { 
     $("#scrollDown").show(); 
     count++; 
     $('html,body').animate({scrollTop: $('#scrollDown').offset().top}, 1500); 
     if(count==1) 
      $(this).trigger('click'); 
     else 
      count = 0; 
    }); 
+0

而不是計數你可以使用'.one()' – diEcho

+0

不同意,這裏是一個遞歸調用 –

+0

這適用於chrome,safari和ff!謝謝!我如何使用one();我嘗試過但它停止工作。我很想知道這個語法。再次感謝! – elasticgurl