2017-02-24 11 views
1

データベースに保存されているイベントのタイトルを表示するナビゲーションバーのドロップダウンメニューがあります。ユーザーがこれらのリンクの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

ページにいくつかのイベントがある場合、どのイベントをスクロールするかを指定するにはどうすればいいですか?前のページのリンクから値を渡すことはできますか?私はどのようなdivを私が要求していることを知るために、おそらくページがちょうど正常にロードされている場合はnullになるように、セッション変数を埋めるだろう何とかPHPでこれを行うことはできますか? – bryangators55

+1

'window.location.hash'はあなたにクエリのparamを与えます。私はこれで答えを編集します。 – amflare

+0

これは完璧に働いてくれてありがとう! – bryangators55

関連する問題