Javascript jqueryajax:当函数事先未知时,在成功时重新执行函数
我是一个WordPress主题开发者(虽然这不是WordPress特有的问题),我已经构建了一个ajaxified主题,其结构如下Javascript jqueryajax:当函数事先未知时,在成功时重新执行函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我是一个WordPress主题开发者(虽然这不是WordPress特有的问题),我已经构建了一个ajaxified主题,其结构如下 <body> <div id="site-header"> content here </div> <div id="site-body"> content here </div> <div id="site-footer"> content
<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);
}
});
$.ajax({
url:targetURL,
数据类型:“html”,
成功:功能(响应){
var targetBody=$(response).filter('#site body').html();
$('body')。前缀(“”);
$('#ajax body').append(targetBody);
}
});
它工作得非常好。但现在的问题是,目标页面可能包含一些元素,例如图像滑块,它使用一些jquery插件。现在,当我们将在#ajax body div中加载新页面内容时,图像滑块需要重新启动相应的jquery插件以获得正确的行为
一种解决方案是在Ajax回调函数中调用此函数,它可以工作。但这种方法只有在我们确切了解函数时才有效,因此可以在ajax回调中手动包含它们
现在,情况是最终用户可以使用任何jquery插件,我不能手动调用ajax回调中成百上千的jquery插件
这里的解决方案是什么?如果可以将部件分解为单独的文件,那么可以使用jQuery的
.load()
函数。如果没有选择器表达式,它将运行html中的任何脚本块
我遇到了一个类似的需求,$.load()
没有按照我所需要的方式工作,因此我设计了每个“模板”页面,其中包含自己的函数子页面_init()
,我将在ajax脚本加载后运行它
我不太喜欢依赖约定,但有时它是最好的选择。这里的重点是,我不知道有什么函数需要重新执行。e、 g在WordPress中,用户可以使用任何插件,我们实际上无法在ajax回调中手动重新执行数千个插件函数,也无法在
子页面_init()
中定义任何函数。我想我看不太清楚全局。。。是否可以在一个函数的主页上设置所有$(document).ready()
代码,然后从$(document).ready()和$(document).ajax加载后调用该函数?这是不可能的,代码未知,最终用户可以在现有站点上插入任何代码集。