html - jQuery中的appendTo替换旧的div insted,在其下添加新的div
问题描述
我对这段代码有疑问。我正在尝试将带有图片的新 div (newGallery) 附加到 div (gallery) 但它仍在替换旧的。
你能告诉我如何解决它吗?我认为它在ajax函数内部有一些麻烦。我正在使用 jquery v3.5.1。
menu.on('click', 'a', function(event) {
event.preventDefault();
var a = $(this),
li = a.parent(),
href = a.attr('href'),
loadingImg = $('<img>', {src: 'img/5.svg', class: 'loading-img'}),
id = '#' + href.slice(0, -5),
isLoaded = gallery.find(id),
currentGallery = gallery.find('.gallery-set'),
galleries = $('.gallery-set');
if (li.hasClass('selected')) return;
li.addClass('selected')
.siblings().removeClass('selected');
//zobrazenie loading ikony pokial sa obsah nenacita
gallery.html(loadingImg).show();
gallery.find('div').fadeOut();
if ( galleries.attr("id") == id ) {
currentGallery.hide();
gallery.find(id).fadeIn();
} else {
loadNewGallery(href);
};
function loadNewGallery (href) {
var gallery = $('.gallery');
$.ajax({
url: href,
data: 'GET',
dataType: 'html',
// ak sa data nacitaju vykona sa funkcia v done
}).done( function( data ) {
var newGallery = $(data).find('.gallery-set');
//nacitany kus stranky cez ajax sa vlozi do gallery natrvalo
newGallery.appendTo(gallery);
// ak sa data nenacitaju vykona sa funkcia vo fail
}).fail( function() {
// sprava o zlyhani prenosu
var msg = $('<div>',{class: 'msg-fail'}),
msgText = 'Je nám ľúto, danú stránku sa nepodarilo zobraziť',
msgFail = msg.html(msgText);
gallery.html(msgFail);
// aj ked sa data nacitaju alebo nenacitaju vykona sa funkcia v always
}).always(function() {
// skrytie loading ikonky
loadingImg.hide();
});
};
});
解决方案
试试这个方法...
const gallery = $('.gallery');
function loadNewGallery(href) {
$.ajax({
url: href,
data: 'GET',
dataType: 'html',
// ak sa data nacitaju vykona sa funkcia v done
}).done(function(data) {
var newGallery = $(data).find('.gallery-set');
//nacitany kus stranky cez ajax sa vlozi do gallery natrvalo
newGallery.appendTo(gallery);
// ak sa data nenacitaju vykona sa funkcia vo fail
}).fail(function() {
// sprava o zlyhani prenosu
var msg = $('<div>', {
class: 'msg-fail'
}),
msgText = 'Je nám ľúto, danú stránku sa nepodarilo zobraziť',
msgFail = msg.html(msgText);
gallery.html(msgFail);
// aj ked sa data nacitaju alebo nenacitaju vykona sa funkcia v always
}).always(function() {
// skrytie loading ikonky
loadingImg.hide();
});
};
menu.on('click', 'a', function(event) {
event.preventDefault();
var a = $(this),
li = a.parent(),
href = a.attr('href'),
loadingImg = $('<img>', {
src: 'img/5.svg',
class: 'loading-img'
}),
id = '#' + href.slice(0, -5),
isLoaded = gallery.find(id),
currentGallery = gallery.find('.gallery-set'),
galleries = $('.gallery-set');
if (li.hasClass('selected')) return;
li.addClass('selected')
.siblings().removeClass('selected');
//zobrazenie loading ikony pokial sa obsah nenacita
gallery.html(loadingImg).show();
gallery.find('div').fadeOut();
if (galleries.attr("id") == id) {
currentGallery.hide();
gallery.find(id).fadeIn();
} else {
loadNewGallery(href);
};
});
推荐阅读
- python - 如何使用 Python ::Windows 列出和读取所有已安装的证书 (SSL)
- php - 调用未定义的方法 setasign\\Fpdi\\Fpdi::setSignature() 错误调用 setSignature
- python - 正则表达式使用python将字符移动到字符串的末尾
- java - spring boot 安全异常消息本地化
- python - keras.layers.MultiHeadAttention 给出警告:以下变量被用于 Lambda 层的调用 [],但不存在于其跟踪的对象中
- python - Python 请求调用以使用您的自定义 Session 类
- google-contacts-api - 谷歌应用程序:权限拒绝:从我自己的应用程序启动 Intent
- html5-canvas - Konva JS - 如何使用输入值添加自定义形状
- c# - 如何在两个 WCF 客户端之间同步变量?
- python - 将集合转换为列表时会发生什么?