ajax 経由で読み込まれるダイアログがあります。その ajax のペイロードには、html と javascript の両方が含まれています。
ダイアログは正常に表示され、そのペイロードに含まれる JS が実行されます。
ただし、ペイロード内の JS から (ID、クラス、または要素タイプによる) 要素を選択できません。
ペイロードに次のものがあったとしましょう:
<div>
<ul id="testid">
<li>A</li>
<li>B</li>
</ul>
</div>
<script type="text/javascript">
$(document).ready(function() {
console.info('test: ' + $("#testid").length);
});
</script>
これにより、test: 0 がコンソールに表示されます。
「本体」を選択するようにセレクターを変更すると、ゼロ以外の値になります。
ロードされたコンテンツが表示され、そこに含まれる JS が実行されていることは明らかです。私の理解では、.ready() 呼び出しにより、HTML ペイロードを含めるように DOM 時間を更新できるようにする必要があります。
残念ながら、この例では、ダイアログ機能を実行するフレームワーク (zotonic) を使用しているため、ajax ロード自体を直接制御することはできません。
奇妙なことは、私が持っている他の ajax ロードされたページで、ajax ロードされたペイロードの要素を選択する JS が機能していることです。(これまでのところ) 失敗しているように見えるダイアログのものだけです。
なぜこれがうまくいかないのか、私は少し途方に暮れています。私はデューデリジェンスを行い、過去数日間グーグルなどを検索しましたが、解決策がなかったので、ここで助けを求めて叫びたいと思いました.
ジェイソン