在WordPress中加载AJAX页面的方式正确吗?

时间:2011-11-16 作者:Nikos

我尝试了以下方法,但如果我正在加载的页面有javascript,它将不会运行,因为元素是在页面加载后创建的。当javascript是我编写的东西时,我只需在load()之后再次调用该函数就可以了,但是我能为页面上的插件做些什么呢?比如联系方式等?

在wordpress中进行ajax调用以使我的rest javascript不会停止的正确方法是什么?谢谢

$(\'#subpage_arrows a\').live("click", function(){

      $(\'.content_inside\').wrap(\'<div id="ajax_content" />\');
      $(\'#ajax_content\').css(\'height\',$(\'.content_inside\').height());

      var toLoad = $(this).attr(\'href\')+\' .content_inside\';  

      $(\'.content_inside\').fadeOut(\'fast\',loadContent);

      $(\'#load\').remove();  
      $(\'#content\').append(\'<div id="load">Loading...</div>\');  
      $(\'#load\').fadeIn(900);  
      window.location.hash = $(this).attr(\'href\').substr(0,$(this).attr(\'href\').length-5);  
      function loadContent() {  
          $(\'#ajax_content\').load(toLoad,\'\',showNewContent());
      }  
      function showNewContent() {  
          $(\'#ajax_content\').hide().fadeIn(1000,hideLoader()).css(\'height\',\'auto\');

      }     
      function hideLoader() {  
          $(\'#load\').fadeOut(\'normal\');
      }  
      return false;     

});

1 个回复
SO网友:onetrickpony

简短的回答是:以正确的方式,你所问的是不可能的。

由于DOM已更改,因此删除的元素上附加的事件也已删除,因此需要在新元素上再次运行javascript。如果您无法控制这些插件和它们的javascript,那么您将不得不以丑陋的方式进行操作。这意味着您需要搜索<script> 标记并将它们注入到文档中。

更糟糕的是,您需要通过小心地传递字符串绕过浏览器的“安全”措施,如\'<scr\' + \'ipt>\' 至美元。append()(或您使用的任何innerhtml包装)。还要避免执行任何包含document.write 呼叫(here\'原因)。

作为补充说明,尽量避免美元。为…而活$.delegate:

$(\'#subpage_arrows a\').live("click", ... => $(\'#subpage_arrows\').delegate("a", "click", ...

(缩小dom选择范围)

结束

相关推荐

在AJAX助手函数中检索帖子信息

我在帖子中有一个按钮,用户可以点击。单击后,将进行AJAX调用。我的问题是,在我的PHP AJAX helper函数(位于我的主题函数.PHP中)中,如何检索,例如,发送请求的帖子的ID。我可以从标记中获取ID并将其传递到AJAX调用中,但它看起来很混乱,即。<article id=\"post-12\"> <!-- article content --> </article> // JS var postID = $