当我点击菜单中的一个项目时,我将文档的内容加载到div中。该外部文档包含jQuery命令。但是没有运行。
$(document).ready(function() {
$("ul.subnav li a").click(function() {
link = $(this).attr("href");
$.ajax(link).done(function(data) {
$("#div-page").html(data);
});
return false;
});
});
在将要加载的文档中,有更多这样的jQuery命令:
$(document).ready(function() {
// get lista de estados
$.ajax("../php/get_lista_estados.php").done(function(data) {
$("#estados").append(data);
});
$("#estados").change(function() {
id = $(this).val();
// get lista de estados
$.ajax("../php/get_lista_municipios.php?id=" + id).done(function(data) {
$("#municipios").html(data);
});
});
});
但是当我将此文档加载到div中时,命令不会运行。我说得清楚吗?
答案 0 :(得分:1)
您可以使用$.getScript
加载并运行它。阅读jQuery文档以获取更多信息
示例:
$.getScript("test.js", function(){
alert("Running test.js");
});
答案 1 :(得分:1)
$(document).ready(function() {
$("ul.subnav li a").click(function(e) {
e.preventDefault();
link = $(this).attr("href");
$.ajax({
url: link,
dataType: "script"
}).done(function(data){
// No need to append data as the script has already been loaded and run.
// $("#div-page").html(data);
// Do any other stuff here..
});
});
});
答案 2 :(得分:1)
当谈到jQuery和Ajax的结合时 - 了解在脚本加载时如何在DOM上实现JavaScript非常重要。
您看到使用$.getScript()
或添加<script src="your.js"></script>
的答案的原因是,一旦加载了DOM,那就是它。如果你想要添加函数,只要它来自外部脚本通过ajax,就像你想要做的那样。您正在尝试将新功能加载到“已加载”的DOM中 - 而不是它的工作方式。
如果您希望任何函数响应ajax注入,那么您需要让脚本成为运行DOM时预加载的脚本。那么,这就是$.getScript()
进入图片的方式。
通常,通过您想要的那种注入,您将需要使用$.getScript()
来获取您的javascript函数/定义,同时使用您的ajax来获取/发布包含HTML结构的脚本。您将能够在此方法中执行此奇特注入并使用jQuery进行播放。