jQuery .get()DOM古怪

时间:2012-02-20 19:38:37

标签: jquery dom

快速纲要 - 当用户点击图像元素时,我正在为图像元素添加一类“已检查”。 点击我的“下一步”按钮会隐藏“选择照片”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();
}

});

有没有办法在没有重新加载页面的情况下将这些'已检查'项目放回'choose'div中?基本上只是重置过程。

1 个答案:

答案 0 :(得分:1)

jQuery使用愚蠢的行为重载它的一些方法。

一个例子是它允许这个......

var selected = $('.checked').get();
$('.confirm-batch').show().html(selected);

看起来你正在插入一个从selected元素渲染的HTML字符串,但你不是,它正在重新发布它们,就像你通常使用DOM节点一样。

作为一种解决方案,您可以克隆它们,或者更好,只需将它们放回找到它们的位置,而不是使用.html('')

来销毁它们。