Jquery get()DOM古怪
快速运行-当用户单击图像元素时,我正在向它们添加一类“checked”。 单击我的“下一步”按钮隐藏“选择照片”div,并显示“确认”div,插入选定的照片,如下所示:Jquery get()DOM古怪,jquery,dom,Jquery,Dom,快速运行-当用户单击图像元素时,我正在向它们添加一类“checked”。 单击我的“下一步”按钮隐藏“选择照片”div,并显示“确认”div,插入选定的照片,如下所示: $('.next').click(function () { $('.user-photos').attr('id', 'step-two'); $('.choose-photos').hide(); var selected = $('.checked').get(); $('.confirm-batch').
$('.next').click(function () {
$('.user-photos').attr('id', 'step-two');
$('.choose-photos').hide();
var selected = $('.checked').get();
$('.confirm-batch').show().html(selected);
}
});
.get()方法工作得很好;但是,如果单击返回到步骤1并选择“新建照片”,则所选的任何照片都将从DOM中消失
$('.choose').click(function (){
$('.user-photos').attr('id', 'step-one');
$('.confirm-batch').hide().html('');
$('.choose-photos').show();
}
}))
有没有一种方法可以在不重新加载页面的情况下将那些“选中”项返回到“选择”div中?基本上只是重置进程。jQuery用愚蠢的行为重载了一些方法 一个例子是它允许这样做
var selected = $('.checked').get();
$('.confirm-batch').show().html(selected);
看起来您正在插入从选定的元素呈现的HTML字符串,但是您没有,它正在重新激活它们,就像您通常使用DOM节点那样
作为一种解决方案,您可以克隆它们,或者更好,只需将它们放回找到它们的位置,而不是使用.html(“”)
销毁它们。也许您希望首先克隆元素:$('.checked').clone().get()
get()
返回一个元素数组,你不需要对它们进行循环吗?克隆元素会有用的。或者,如果您不关心元素的顺序,您可以将它们从移回。确认批处理到。选择照片,方式与以前大致相同。此外,我很惊讶使用元素数组调用.html()
。jQueryAPI似乎表明它不会。我也很惊讶它能工作……我很谨慎,但把它归为好运,然后继续前进。我确信我必须将它们发送到一个数组并返回值,等等。这是html
的未记录用法吗?@JamesMontagne:似乎是。他们最好让它插入元素的.toString()
值(即使它不是所需的内容),而不是给它DOM操作功能。我认为他们最好让它什么都不做或将这种行为添加到文档中,而不是继续做一些事情(尽管破坏性较小)这仍然是未记录的..clone()起作用了。我被绊倒了,因为我的思路和你提到的完全一样。谢谢大家。@AnthonyGrist:我同意,不过我宁愿看到它添加一个字符串,比如“[object HTMLImageElement”]
,也不愿将其添加到文档中。