[英]How to execute jQuery function after Ajax page load
我正在建立Wordpress網站,其中所有內容頁面都是使用Ajax加載的。 這導致我的jQuery localScroll插件出現問題。 此插件會將動畫滾動添加到頁面上的所有錨鏈接。 問題是,使用下面的腳本,只有單擊頁面上的鏈接之一后,我才能在該頁面上播放動畫。
我想我知道為什么會這樣。 我的猜測是,我單擊主菜單腳本后將執行腳本,但是由於尚未加載Ajax內容,因此事件未附加到Ajax加載的內容鏈接上。 現在我被困住了,我不知道如何解決這個問題。 您介意幫我解決這個問題嗎?
先感謝您。
$(function(){
$('a').live('click', function() {
$('#portfolioWrap').localScroll({// Only the links inside that jquery object will be affected
target: '#portfolioWrap', // The element that gets scrolled
axis:'y', // Horizontal scrolling
duration:1500
});
});
});
編輯
在我設法完成這項工作后,只給其他人一個便條。 我在這里嘗試了所有建議。 我的猜測是ov和Ohgodwhy建議的解決方案應該可行,但是可能由於網站的復雜性以及插件的限制,我無法使其正常工作。 例如,盡管我使用的是jQuery 1.7.1, .on
函數根本不起作用。 最后,我實現了ajaxComplete
建議的ajaxComplete,並且有效。 謝謝大家的幫助!
這是代碼:
$(function() {
$('#wrapperIn').ajaxComplete(function() {
$('#portfolioWrap').localScroll({
target: '#portfolioWrap', // The element that gets scrolled
axis:'y', // Horizontal scrolling
duration:1500
});
});
});
詳細說明GoldenNewby所說的內容,使用jQuery 1.7中引入的.on()方法進行偵聽/附加。
$(function(){
$('body').on('click', 'a', function() {
$('#portfolioWrap').localScroll({
target: '#portfolioWrap', // The element that gets scrolled
axis:'y', // Horizontal scrolling
duration:1500
});
});
});
無需將AJAX用於回調以偵聽/綁定到元素。 上面的函數將在頁面加載時/加載后在主體 { 1 }中找到的所有元素上放置一個click函數。 這包括所有動態創建的鏈接。
{ 1 }-將“ body”更改為包含ajax數據的任何Container。 IE #portfolioWrap
如果使用jQuery.ajax加載AJAX內容,則可以嘗試綁定到ajaxComplete事件,以獲取完成任何ajax的時間。
向ajax加載添加回調,開始的好地方是http://api.jquery.com/jQuery.ajax/的 “成功回調”下
我會提供更具體的建議,但是您的代碼段有點孤立,也許如果您創建了jsfiddle?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.