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

jQuery Ajax: re-executing function on success, when function is NOT known beforehand

本文关键字:函数 新执行 执行 成功 jQueryAjax 未知      更新时间:2023-09-26

我是一名WordPress主题开发人员(尽管这不是WordPress特有的问题),我已经构建了一个具有这样结构的优化主题。。。

<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 bodydiv中加载新的页面内容时,图像滑块需要重新启动相应的jquery插件以获得正确的行为。。。

一种解决方案是在Ajax回调函数中调用此函数,它是有效的。但是,只有当我们确切地了解函数时,这种方法才有效,因此可以手动将它们包含在ajax回调中。

现在的情况是,最终用户可以使用任何jquery插件,而我不能在ajax回调中手动调用数百个甚至数千个jquery插件。

这里的解决方案是什么?

如果您可以将零件分解为单独的文件,那么您可以使用jQuery的.load()函数。如果没有选择器表达式,它将运行html中的任何脚本块。

http://api.jquery.com/load/

我遇到了一个类似的需求,$.load()不能完全按照我需要的方式工作,所以我用它自己的function subPage_init()设计了每个"模板"页面,在我的ajax脚本加载它之后,我会运行它。

我不太喜欢依赖惯例,但有时这是最好的选择。