jQuery Ajax:当事先不知道函数时,在成功时重新执行函数

时间:2014-04-09 13:42:37

标签: 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 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插件。

这里可能有什么解决方案?

1 个答案:

答案 0 :(得分:0)

如果你可以将你的部分分成不同的文件,那么你可以使用jQuery的.load()函数。如果没有选择器表达式,它将在html中运行任何脚本块。

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

我遇到了一个类似的要求$.load()并不像我需要的那样工作,所以我设计了每个'模板'页面,它有自己的function subPage_init(),我会在它加载后运行通过我的ajax脚本。

我不是依赖惯例的忠实粉丝,但有时它是最好的选择。