2017-01-01 59 views
0

什麼,我特林實現點擊一個鏈接 後執行2個行動 - 陸續2事件

  • 第一個,去某個頁面
  • 然後,平滑滾動下來並關注該頁面上的textarea

這兩個頁面都在我的域中。有這個到目前爲止,但不太工作:

jQuery('.link').click(function() { 
     window.location.href = 'http://example.com/page'; 
    }); 
    jQuery('.link').click(function() { 
     jQuery('html, body').animate({ 
      scrollTop: jQuery('.textarea').offset().top-220 
     }, 700, function(){jQuery('.textarea').focus();}); 
    }); 
+0

這是外部頁面你的域呢?如果是這樣,你無法控制任何東西,甚至滾動到一個特定的點。如果該網頁位於您的網域中,例如你的本地驅動器上都有兩個頁面,那麼你應該把jquery動畫放在第二頁的javascript中。 –

+0

您是否控制了正在加載的第二頁上的代碼? – charlietfl

+0

這兩個頁面都在我的域名 – benua

回答

1

您的代碼無法正常工作,因爲在將位置更改爲新頁面後,腳本將被重新加載,並且click事件的上下文丟失。如果您希望(新)頁面在每次訪問時滾動,則可以簡單地將第二個功能設置爲它的onload事件。如果您希望只有在通過特定鏈接訪問時才向下滾動,則可以向鏈接的href上的網址添加參數,並通過在該新頁面上獲取該參數,可以確定是否已通過該鏈接訪問了該參數鏈接並相應地滾動。

jQuery('.link').click(function(e) { 
    e.preventDefault(); 
    location = 'http://example.com/page/#/scroll'; 
}); 

var pageUrl = location; 
if(String(pageUrl).substr(-8) == "#/scroll") { 
    jQuery('html, body').animate({ 
     scrollTop: jQuery('.textarea').offset().top-220 
    }, 700, function(){jQuery('.textarea').focus();}); 
} 

明白我的意思通過訪問這些鏈接(查看源代碼的腳本): -

沒有滾動 - http://s.codepen.io/cod3rguy/debug/vgBpEb/

滾動 - http://s.codepen.io/cod3rguy/debug/vgBpEb/#/scroll

+1

太棒了,效果很好。感謝您的詳細解釋。 – benua

+0

@benua很高興我能幫忙:) – CoderGuy

-2

你不必使用2個功能。在第一個函數體中包含第二個函數的主體。

+0

腳本不會在第二頁上運行。這個答案不起作用 – charlietfl

+0

不,這是一個外部頁面。我們需要知道該頁面是否超出OP的域名。 –

+0

這兩個頁面都在我的域名 – benua

1

當您導航到新頁面window.location.href時,當前上下文丟失;第二個滾動邏輯將不起作用。也許你應該在新頁面中執行滾動邏輯,而不是在click事件中進行。

您可能需要區分是否需要在新頁面中進行自動滾動,您可以傳遞類似於 - http://example.com/page?scroll=true之類的查詢字符串 - 並且在該頁面加載中,可以檢查查詢字符串並執行滾動邏輯。

+0

謝謝我會盡力 – benua