.load 関数を呼び出すと、HTML コードが表示されますが<script>
、cards.tpl.php のコンテンツ、コードが消去されます。
<script type="text/javascript">
//anything
</script>
<div style="float:right" class="blah">
<!-- anything -->
</div>
index.php からのコード:
<div id="cards">
<?php include 'tpl/cards.tpl.php'; ?>
</div>
...
<script type="text/javascript">
$('#drawCard').click(function(){
$('#cards').load("tpl/cards.tpl.php",function(){
});
});
</script>
PHP にコンテンツが含まれている場合は、<script>
. .load がスクリプト タグを実際に削除するのを見ましたが、それらは実行されます。バインドされたイベントは実行後も残りますか?
編集:
わかりました、ついに私はこのすべての背後にある問題の解決策を得ました. <script></script>
イベント バインディング コードを含む呼び出しに load() を使用すると、頭の痛い問題が発生します。それをしないでください!$.load() 関数を使用した後のバインドの問題に対処することが実際の問題である場合は、次のことをお勧めします。
すべての click()、on('click') イベントを、livequery('click') を使用して livequery と呼ばれるプラグインに置き換えました。これは 100% 動作します。
新しい質問を開く気分ではありませんが、期待どおりに機能しないのに、JQuery が live() を on() に置き換えるように指示するのはなぜですか?
JAAulde の編集
<div id="cards">
<!-- this content is replaced -->
<div value="t1" class="impar tecnologia unselected investigated notUsed">stuff</div>
</div>
<!-- end of content replaced-->
</div>
このjQueryコードを使用して:
$("#cards").on('click','.unselected',(function(e){}));
これはロード前に機能し、ロード後に機能しません