jquery detach()在自定义点击事件中

时间:2014-01-16 02:32:56

标签: javascript jquery

我的情况相当复杂(至少对我来说):

我有一个用于显示叠加层的点击功能。在click函数中,有问题的元素是动态确定的:

$('a.overlay-show').click(function() {

var id = $(this).attr('id');
var el_id = '#project-details-overlay-' + id;

现在我想做的是:

$(el_id).detach();

但我发现这不起作用,因为我传入的元素不是选择器。那怎么会这样做呢?

我需要做的是抓住该元素并将其重新附加到其他地方。我曾尝试使用.html()等来处理元素的内容,但因为内容有时包含幻灯片等javascript元素,所以这似乎不太合适......

有什么建议吗?

2 个答案:

答案 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()只能工作。