我尝试了以下方法,但如果我正在加载的页面有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;
});
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选择范围)