Jquery get()DOM古怪

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').

快速运行-当用户单击图像元素时,我正在向它们添加一类“checked”。 单击我的“下一步”按钮隐藏“选择照片”div,并显示“确认”div,插入选定的照片,如下所示:

$('.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”]
,也不愿将其添加到文档中。