2017-01-20 9 views
1

は、私はDIVにファイルをロードするコードです:ここではロードページといくつかの要素のidによるコンテンツやクラスを変更

$(".side-nav a").click(function(e) { 
     e.preventDefault(); 
     $("#page-wrapper").load(file); //file="path to php file" 
     $(".title").text(title); //title="some titles" 
    }); 

は、私はfile.phpからロードするコードの一部です:

(...) 

<h1 class="page-header"> <span class="title"></span><small>details</small></h1> 
<ol class="breadcrumb"> 
    <li><i class="fa fa-dashboard"></i><a href="#"> Dashboard </a></li> 
    <li class="active"><i class="fa fa-edit"></i> <span class="title"></span> </li> 
</ol> 

(...) 

今はclass="title"を持つ要素で何とか新しいタイトルをつけたいと思います。上記のようにすれば何も起こりません。これを修正するには?

+0

bcauseロードは非同期です。基本的にピザを注文し、送信ボタンを押すとすぐに食べてみましょう。あなたはピザがあなたの家に来るのを待つ必要があります。 [load](http://api.jquery.com/load/)のドキュメントをお読みください – epascarello

答えて

2

試し以下、それはDOMを実行し、内線文を実行しようとする$.loadを待たず、$.loadとして

$(".side-nav a").click(function(e) { 
     e.preventDefault(); 
     $("#page-wrapper").load(file,function(){ 
      $(".title").text(title); //title="some titles" 
     }); //file="path to php file" 

    }); 

が非同期で動作するかどうか確認してください。 $(".title").text(,,,)に到達する時点では、この実行全体が数分の1秒以下で実行されるため、要素が存在しません。

+0

お返事ありがとうございます。今はうまくいく。 – felixRo

+0

ありがとう、ここでは、$ .loadのすべての可能な詳細を見つけることができますhttp://api.jquery.com/load/ –

+1

実際には私はロード関数が非同期であることを知っていました。コンソールログにも警告が表示されます "メインの同期XMLHttpRequestスレッドは非推奨です.... "しかし、これは多分私はページを読み込むために使用するこの全体のアイデアを置き換えるために異なるトピックです。なぜ私はこの解決策を考えていないのか分かりません(私は前にそうしていますが、あまり頻繁ではありません)。とにかくこのように私に指示してくれてありがとう。 – felixRo

2

load()は非同期なので、完全なコールバック内ではそれを行います。さもなければ、要素は存在しません。

$("#page-wrapper").load(file,function(){ 
    $(".title").text(title); 
}); 
+1

あなたにもお答えいただきありがとうございます。 – felixRo

関連する問題