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