2012-01-08 17 views
1

アクティブではありません。コンテンツは、()、私はこれらのページを持っているメインページ

information.php

<div id='content'>Foo Bar</div> 

main.php

<div id='main'></div> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#main").load("information.php"); 
    $("#content").click(function() { 
     alert("Worked!"); 
    }); 
</script> 

I <div>id=contentをクリックし、information.phpからロードします。 ppens。 Chromeのコンソールにもエラーは報告されません。私が手作業でcontent-divをinformation.phpからmain.phpページに入れると、すべて正常に動作します。 jQueryのロードを使用すると、なぜ動作しませんか?

jQueryのメインスクリプトがロードされ、他のすべてのjQuery関数がサイト上で完璧に動作します。ロードされたページのIDが機能しない、または何らかの種類のアクティブでないという別のページを私のメインページにロードするときです。

答えて

5

click-handlerがid 'content'のdivに設定する必要がある場合、load-methodは完了していません。 load-methodに第二パラメータとして完全なハンドラを追加します。また

$(document).ready(function() { 
    $("#main").load("information.php", function() { 
     $("#content").click(function() { 
      alert("Worked!"); 
     }); 
    }); 
}); 

このexampleを参照してください。

+0

ありがとうございました。私はまた、 '#main' divに情報を '.append'しようとするときにも同じ問題を抱えています。私は'append 'を使って同じことをすることができるかどうかを調べましたが、同じ方法でコールバックを持つようには見えません。 '$( "#main")を追加すると、append( "

Foo Bar 2
");メインページで対応するクリックイベントを作成すると、動作しません。私はそれが同じ問題だと思いますが、私は関数をappendに渡すことはできませんよね? – skoTner

+0

'.load()'と '.append()'には大きな違いがあります。 'load'はサーバーにリクエストを行い、サーバーが結果をマッチした要素に配置すると答えます。 'append'は一致した要素にhtmlコードを直接追加しました。したがって、待つ必要はなく、完全なハンドラは必要ありません。そうすればうまくいくはずです。おそらく、あなたは新しいID「content2」を使用してクリックイベントを設定することを忘れていたでしょうか? – scessor

+0

いいえ、ここの私の例を見てください:http://jsfiddle.net/TQVYb/1/ – skoTner

関連する問題