簡體   English   中英

定位加載了jquery load()的元素

[英]Targetting elements loaded with jquery load()

我正在做一個網站,所有內部鏈接使當前頁面淡出,新內容淡入。我使用jquery load()做到了。 加載和衰落部分的工作原理如下:

    var $mainContent = $("#ajaxcontainer"),
        $internalLinks = $(".internal"),
        URL = '',
        $ajaxSpinner = $("#loader"),
        $el;

    $internalLinks.each(function() {
        $(this).attr("href", "#" + this.pathname);
        }).on('click', function() {

            $el = $(this);

            URL = $el.attr("href").substring(1);
            URL = URL + " #container";

            $mainContent.fadeOut(500, function() {

                $ajaxSpinner.fadeIn();
                $mainContent.load(URL, function() {
                    $ajaxSpinner.fadeOut( function() {
                        $mainContent.fadeIn(1000);
                    });         
                });

            });


        });

如您所見,我按給定它們的類(.internal)定位所有內部鏈接。 我的問題是,一旦用ajax加載了內容,我就無法通過jquery定位此新內容,因此$ internalLinks.each()等將損壞,這意味着該站點僅恢復為默認鏈接行為。

與此相關的另一件事是,我希望能夠使用jquery.masonry插件來定位此新加載的內容。 我現在做事情的方式也不可行。 非常感謝你。

更新頁面時,舊的.internal鏈接將被刪除,因此附加到它們的事件處理程序將無法正常工作。 更改代碼以使用事件委托:

$('.internal').each(function() {
    $(this).attr("href", "#" + this.pathname);
}); 

$(document).on('click', '.internal', function() {

        $el = $(this);

        URL = $el.attr("href").substring(1);
        URL = URL + " #container";

        $mainContent.fadeOut(500, function() {

            $ajaxSpinner.fadeIn();
            $mainContent.load(URL, function() {
                $ajaxSpinner.fadeOut( function() {
                    $mainContent.fadeIn(1000);
                });
                $('.internal').each(function() {
                    $(this).attr("href", "#" + this.pathname);
                });        
            });

        });
});

如您所見,我也在刷新后刷新了每個鏈接的屬性href

**編輯**我第一次缺少更改href屬性。 現在應該可以了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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