2011-04-28 20 views
1

私はPHPのファイルからdivに返されるHTMLをロードするための関数を持っています。 htmlがdivに配置されると、divを表示するcolorboxのjquery関数を呼び出すようにします。私が持っている問題は、HTMLが実際にdivに配置される前にコールバックが実行されるということです。 htmlが実際にPHPの実行を終了したときとは対照的にdivに完全に配置されたときにjqueryに関数を実行させる方法はありますか?JQuery:.load()の新しいhtmlの挿入が完了したら、呼び出しを実行しますか?

関数は次のようになります...

function viewDetails(vinNum){ 
    $('#detailsContainer').load('/actions/myfile.php?var='+myVar,function(){ 
     $(".example3").colorbox({transition:"elastic", speed:"100", inline:true, href:"#hiddenModalContentbox"}); 
    }); 
} 

問題は、それが実際にdiv要素の中にHTMLを入れて終了する前にコールバックが呼び出されていることです。これは、mysqlが必要とするデータを与えるのを待っている間に、phpがいくつかのhtmlを出力することによって引き起こされる可能性がありますか?もしそうなら、私はすべてのデータを取得し、一度にすべてのhtmlをエコーする必要がありますか?


EDIT: これは私が同じ結果で、今試してみたものです。私はまた、ロードされているPHPファイルにjavascriptアラートを追加しました。カラーボックスがコールバックによって呼び出された後、警告が呼び出されます。 FINAL

function viewDetails(myVar) { 
    $.ajax({ 
     url: '/actions/myfile.php', 
     data: 'var=' + myVar, 
     success: function(html) { 
      $('#detailsContainer').html(html); 
     }, 
     complete: function(){ 
      $(".example3").colorbox({transition:"elastic", speed:"100", inline:true, href:"#hiddenModalContentbox"}); 
     } 
    }); 
} 

編集:私はカラーボックスは最初から不正に呼び出されていたことを発見しました。私は他の人からコードの一部を継承しましたが、それは正しく設定されていると思いました。私がしなければならなかったのは、( ".example3")クラス呼び出しを取り除くことだけでした。そのクラス呼び出しは、そのクラスを持つリンクにメソッドを添付し、コールバックが終了する前にそのメソッドを呼び出します。すべてのコールバックは、そのクラスのアイテムにcolorboxメソッドを再度割り当てます。すべての私の話はおそらく、泥のように物事をはっきりとさせますが、入力の皆様に感謝します。ここに最終的に働く電話があります...

+0

http://docs.jquery.com/Tutorials:Introducing_$(document:

がロードされたコンテンツは、実際にDOMに追加された後load()のコールバックが実際に発射実証するために、ここに小さなデモです).ready() – sdolgy

+0

あなたのステートメントは間違っています、htmlが実際にターゲット要素に置かれているときにコールバックが発生します。http://jsfiddle.net/3ZAQB/1/ロードされたコンテンツの背後にあるテクノロジはAT ALL 。 jQueryはPHPかどうか、そしてスクリプトにMySQL接続があるかどうかは気にしません。表示されるのはHTMLを配信するURLだけです。また、HTMLが提供されると、PHPが生成を完了したことを意味します。配信に10秒かかることがあります。コールバックはこれらの10秒後に起動します(+それを追加するのに数マイクロ秒かかります)。 – Capsule

+0

sdology - ドキュメントの準備ができています。問題は、私はページ全体を読み込んでいない、私はPHPからHTMLの塊を読み込んでいます。私の知る限り、その目的のために準備が整った書類の申請はありません。 – LoneWolfPR

答えて

0

$.ajax()を実際に使用するのが良い方法です。これにより、ajaxStart、ajaxStop、complete、error、successなどのメソッドが呼び出されます。

0

$.getまたは$.ajaxにドロップして、HTMLを挿入して、それが発生したことを確認してからcolorboxを呼び出すことができます。

function viewDetails(vinNum) { 
    $.ajax({ 
     url: '/actions/myfile.php', 
     data: { var: myVar }, 
     success: function(html) { 
      $('#detailsContainer').html(html); 
      $('.example3').colorbox ... 
     } 
    }); 
} 
+0

これはload()とまったく同じです;-)私は問題がcolorboxにあり、コールバックではないと思います。 – Capsule

0

私はそれはそれはデータを持って前に、PHPは、いくつかのHTMLをエコーする可能性は低いです思っているだろうが、それはまた、かなりスクリプトでデータをエコーされている場所によって異なります。

私はまた、.load()が問題であることを発見したと言いましたが、私はなぜそれを見つけるのに十分な時間を費やしませんでした。私の問題は、ページ上で要素を動的に作成したいという点で、わずかに異なりました。気君たちが高速です分の

ハング.... Tストーンの回答を参照してください

0

コンテンツが実際にロードされた後いいえ、コールバックが実行されていますが、(カラーボックス)を使用しようとしているプラ​​グインおそらくを要素が動的にロードされている場合は機能しません。

これを確認する最良の方法は、ロードされた部分から来る何かを警告しようとすることです、のような:

console.log($('.example3').html()); 

それは要素の内容を示していた場合は、コンテンツはDOMによってロードされ、アクセス可能ですコールバックが発生し、唯一の原因はcolorboxです。 http://jsfiddle.net/3ZAQB/1/

+0

私は呼び出しているPHPファイルに警告を出します。アラートを受け取る前にコールバックがトリガーされます。 – LoneWolfPR

+0

それは何を証明しますか? – Capsule

関連する問題