簡體   English   中英

Ajax頁面加載后如何執行jQuery函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM