我的情况相当复杂(至少对我来说):
我有一个用于显示叠加层的点击功能。在click函数中,有问题的元素是动态确定的:
$('a.overlay-show').click(function() {
var id = $(this).attr('id');
var el_id = '#project-details-overlay-' + id;
现在我想做的是:
$(el_id).detach();
但我发现这不起作用,因为我传入的元素不是选择器。那怎么会这样做呢?
我需要做的是抓住该元素并将其重新附加到其他地方。我曾尝试使用.html()
等来处理元素的内容,但因为内容有时包含幻灯片等javascript元素,所以这似乎不太合适......
有什么建议吗?
答案 0 :(得分:0)
应该这样工作:
$('a.overlay-show').click(function() {
var id = $(this).attr('id');
var el_id = $('#project-details-overlay-' + id);
el_id.detach();
});
我不熟悉分离..如果你想把它移到其他地方:
<div id="somewhereElse"></div>
然后你会写:
el_id.appendTo('#somewhereElse');
如果你想将它保留在原处并将其复制到其他地方:
el_id.clone().appendTo('#somewhereElse');
最后,如果你没有在这一行代码之外的任何地方使用el_id,你甚至不需要额外的变量......只需将var语句和append语句压缩成一个:
$('#project-details-overlay-' + id).appendTo('#somewhereElse');
答案 1 :(得分:0)
谢谢@erikruina - appendTo()
效果更好。我最终用
$('a.overlay-show').click(function() {
var id = $(this).attr('id');
var el_id = $('#project-details-overlay-' + id);
$(el_id).appendTo('#selected-project');
});
我怀疑问题在于detach();
您还需要处理所有子元素,而appendTo()
只能工作。