我是一名WordPress主题开发人员(虽然它不是WordPress特定的问题)而且我正在构建一个具有这样结构的ajaxified主题......
<body>
<div id="site-header"> content here </div>
<div id="site-body"> content here </div>
<div id="site-footer"> content here </div>
<body>
现在,当点击任何链接时,会执行这样的jQuery脚本......
$.ajax({
url: targetURL,
dataType: "html",
success: function(response) {
var targetBody = $(response).filter('#site-body').html();
$('body').prepend('<div id="ajax-body"></div>');
$('#ajax-body').append(targetBody);
}
});
它完美无缺。但现在的问题是,目标页面可能包含一些元素,例如图像滑块,它使用一些jquery插件。现在,当我们在#ajax-body div中加载新页面内容时,图像滑块需要重新启动相应的jquery插件才能正常运行...
一种解决方案是在Ajax回调函数中调用此函数,它的工作原理。但是这种方法只有在我们确切知道函数时才有效,因此可以在ajax回调中手动包含它们。
现在,情况是最终用户可以使用任何jquery插件,我不能手动调用ajax回调中的数百个(如果不是数千个)jquery插件。
这里可能有什么解决方案?
答案 0 :(得分:0)
如果你可以将你的部分分成不同的文件,那么你可以使用jQuery的.load()
函数。如果没有选择器表达式,它将在html中运行任何脚本块。
我遇到了一个类似的要求$.load()
并不像我需要的那样工作,所以我设计了每个'模板'页面,它有自己的function subPage_init()
,我会在它加载后运行通过我的ajax脚本。
我不是依赖惯例的忠实粉丝,但有时它是最好的选择。