我一直在使用jQuery .load()将内容加载到div中。偶尔加载的内容有一个document.ready()函数,它被调用,并正常工作(即调用ready()函数)。但是,当我在.load()中使用元素ID时,例如:.load(“test.php #content”),即使我将脚本标记放在正在的元素中,也不再执行Javascript加载。除了不在.load()中使用元素ID之外,有没有人能解决这个问题?提前谢谢。
这是动态内容(loadDialogTest.php):
<div id="test">
<div>
Hello, World!
</div>
<script type="text/javascript">
$(document).ready (function () {
alert ("ready");
});
</script>
</div>
这里是加载它的页面(未指定元素ID)(在保持表单的同时尽可能缩短:
<head>
<script type="text/javascript">
$(document).ready (function () {
$("#openDialog").click (function () {
$("<div></div>")
.load ("loadDialogTest.php")
.appendTo ($("#containingDiv"))
.dialog ({
autoOpen: 'false',
title: 'Test This!',
close: function () {
$(this).dialog ('destroy').remove ();
}
});
});
});
</script>
</head>
<body>
<a href="#" id="openDialog">Open it</a>
<div id="containingDiv">
</div>
</body>
如果我将.php文件之后的#test作为要加载的div,则不再调用jQuery ready()函数。
答案 0 :(得分:0)
我在某处读到了你必须首先删除()脚本标记,将加载的HTML附加到DOM,然后添加删除的脚本。一旦找到链接,我就会更新。
<强>更新强>
无法找到该链接,但您提供的代码对我来说很好。我正在使用Jquery 1.4.2和Jquery UI 1.8.1。我将您的代码粘贴到我的网站中并且它可以正常工作,提醒“准备就绪”。
更新2
好的,我已经使用你的代码创建了一个测试页面,似乎工作正常 - Load test page。您唯一注意到的是,因为它是一个CMS,它会在加载外部内容后立即重定向您。但警报框确实会触发。
更新3
戴夫,现在看看我的测试页面。我在load()的末尾添加了一个函数,它从加载的html中提取脚本并将它们添加到页面主体。这似乎有效,但我确实必须将Alert从文档ready()函数中拉出来。