jQuery - 如何在 ajaxComplete 上创建一个新函数来模拟 document.ready?
jQuery - How to create a new function to simulate document.ready on ajaxComplete?
我正在使用 FoundationPress 主题(Wordpress 主题与 Zurb 框架的 Foundation 6),我想 ajax 对其进行修改。 (使用 Ajaxify Wordpress 站点插件)。
现在我的问题是我网站上的大多数 javascript 在 ajax 加载后无法正常工作。
我发现这是因为 foundation.js 文件中的大部分 javascript 是在 document.ready
上执行的,而这使用 ajax.
加载页面时,事件 未被触发
我了解无法在页面加载后触发 document.ready
事件。在这里看到多个线程后,似乎唯一的解决方案是使用 document.ready
和 ajaxComplete.
所需的代码创建一个新函数
但是,Foundation 有很多 javascript 文件,其中大部分超出了我的理解水平。有没有什么方法可以创建一个函数来自动执行此操作?
编辑
我试过了。我需要将 jQuery 作为参数传递,否则 initialiseSticky
中的代码将不起作用。它适用于 document.ready
但不适用于 ajaxComplete
,知道吗?
jQuery(function($) {
console.log('document ready- sticky');
initialiseSticky($);
});
$(document).ajaxComplete(function ($) {
console.log('ajax complete- sticky');
initialiseSticky($);
}(jQuery));
function initialiseSticky($) {
//my code
}
不确定 foundation.js 但如果你可以创建一个变量,例如 FooBar
,请在 [=15] 中分配 function()
=] 到那个变量,然后在 ajaxComplete 上再次调用 variable/function 到 "re-trigger" 它,如下所示:
var res = $('#result'),
bg = $('#bg-div'),
btn = $('#btnTest'),
i = 0, // just for demo to illustrate that it is changing
FooBar;
$(document).ready(FooBar = function() {
bg.delay(200).fadeIn(2000);
console.log('document is ready ' + i++);
});
// simulate ajaxComplete
btn.on('click', function() {
res.text('just dummy text here ' + i);
bg.fadeOut(500);
FooBar();
});
body { margin: 0; padding: 0 }
#bg-div { background-color: orange; width: 100%; height: 100%; position: fixed; z-index: -1; display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="bg-div"></div>
<button id="btnTest">Click Me</button>
<div id="result"></div>
我正在使用 FoundationPress 主题(Wordpress 主题与 Zurb 框架的 Foundation 6),我想 ajax 对其进行修改。 (使用 Ajaxify Wordpress 站点插件)。
现在我的问题是我网站上的大多数 javascript 在 ajax 加载后无法正常工作。
我发现这是因为 foundation.js 文件中的大部分 javascript 是在 document.ready
上执行的,而这使用 ajax.
我了解无法在页面加载后触发 document.ready
事件。在这里看到多个线程后,似乎唯一的解决方案是使用 document.ready
和 ajaxComplete.
但是,Foundation 有很多 javascript 文件,其中大部分超出了我的理解水平。有没有什么方法可以创建一个函数来自动执行此操作?
编辑
我试过了。我需要将 jQuery 作为参数传递,否则 initialiseSticky
中的代码将不起作用。它适用于 document.ready
但不适用于 ajaxComplete
,知道吗?
jQuery(function($) {
console.log('document ready- sticky');
initialiseSticky($);
});
$(document).ajaxComplete(function ($) {
console.log('ajax complete- sticky');
initialiseSticky($);
}(jQuery));
function initialiseSticky($) {
//my code
}
不确定 foundation.js 但如果你可以创建一个变量,例如 FooBar
,请在 [=15] 中分配 function()
=] 到那个变量,然后在 ajaxComplete 上再次调用 variable/function 到 "re-trigger" 它,如下所示:
var res = $('#result'),
bg = $('#bg-div'),
btn = $('#btnTest'),
i = 0, // just for demo to illustrate that it is changing
FooBar;
$(document).ready(FooBar = function() {
bg.delay(200).fadeIn(2000);
console.log('document is ready ' + i++);
});
// simulate ajaxComplete
btn.on('click', function() {
res.text('just dummy text here ' + i);
bg.fadeOut(500);
FooBar();
});
body { margin: 0; padding: 0 }
#bg-div { background-color: orange; width: 100%; height: 100%; position: fixed; z-index: -1; display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="bg-div"></div>
<button id="btnTest">Click Me</button>
<div id="result"></div>