Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryajax:当函数事先未知时,在成功时重新执行函数_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript jqueryajax:当函数事先未知时,在成功时重新执行函数

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

我是一个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);

      }

 });
$.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加载后调用该函数?这是不可能的,代码未知,最终用户可以在现有站点上插入任何代码集。