2017-02-24 65 views
1

我有一個導航欄下拉菜單,列出了存儲在數據庫中的事件標題。我試圖讓用戶點擊其中一個鏈接並將頁面帶到被點擊的指定事件。問題是目標事件是由數據庫動態創建的。鏈接到另一頁上動態創建的div

我相信我有一個併發問題,因爲沒有完成抓取事件並動態創建它的ajax請求。有沒有辦法鏈接到頁面,並等待從數據庫創建事件並向下滾動到對象div。

下面是從導航欄的鏈接之一:

<a href="events.php#2">The Choice </a> 

這裏是events.php頁面上的目標DIV:

<div id='2'>Dynamic content</div> 

有什麼我可以做的Javascript或PHP我可以做,等待這加載?也許通過訪問一個隱藏的div來激活一個函數,然後該函數將滾動到div?

+0

請張貼完畢,並顯示您所面臨的問題的代碼的一小部分。 –

+0

永遠不要用一個數字開始一個名字類/ id。 – Roy

+0

不知道你想要我發佈什麼,我試圖儘可能簡化這一點。我只需要鏈接到另一個頁面,等待ajax請求完成,然後滾動到目標div。這不起作用,因爲我鏈接到的ID尚未加載。當我在同一頁面上時,它工作正常。這只是一個併發問題,我只是想知道是否有一種方法可以在鏈接到特定的div之前等待ajax請求完成。 – bryangators55

回答

2

由於頁面不會在加載時滾動,因爲div不存在,所以一旦它存在就滾動到它。這可能發生在ajax查詢的成功上,所以當發生這種情況時,將頁面向下滾動到新的div。

例子:

$.ajax({ 
    url: "test.html" 
    //whatever this ajax is supposed to do. 
}).success(function() { 
    //make the new div 
    $('body').append('<div id="newDiv></div>') 
    //scroll to the new div 
    $('html, body').animate({ 
    // window.location.hash is the div you want to scroll to as set by the link on the other page, and it even comes pre hashed ("#whatever"). 
    scrollTop: $(window.location.hash).offset().top 
    }, 2000); 
}); 
+0

如果頁面上有多個事件創建,我怎樣才能指定要滾動到哪一個。我可以通過上一頁的鏈接傳遞一個值嗎?我可以在PHP中以某種方式做到這一點,它會填充會話變量,可能知道我請求的是哪個div,如果頁面剛剛正常加載,則爲空? – bryangators55

+1

'window.location.hash'會給你查詢參數。我會用這個編輯答案。 – amflare

+0

非常感謝你的工作完美! – bryangators55

相關問題