【问题标题】:jQuery: Detach without string selectorjQuery:分离没有字符串选择器
【发布时间】:2012-07-17 02:35:51
【问题描述】:

我正在尝试分离一个 DOM 元素以将其附加到另一个 DOM 元素。但是 jQuery 拒绝做任何事情,默默地。

问题是,我不能使用字符串选择器,因为我不知道如何选择这个元素。当我第一次将一些 html 代码附加到初始父级时,我已经将它存储在一个变量中(通过“appendTo”。

this.element = $(my_html_string).appendTo(some_dom_parent);

而且效果很好。未按预期工作的代码如下:

this.transferTo = function(dom_parent)
{
    $(this.element).detach()
    $(this.element).appendTo(dom_parent);
}

会发生什么:

  • 元素不会从任何位置移除。
  • 元素被附加到新的父元素。
  • 之前绑定的点击事件会在两个元素上触发。
  • 该单击事件将弹出对话框附加到元素。它总是被附加到新父元素中的元素,无论我点击哪一个。

我尝试了一些硬编码分离,例如:

$('#very_specific_id').detach()

... 它的工作原理。但问题是,我没有放置 ID,这听起来是个非常糟糕的方法。

所以问题似乎取决于我正在保存一个 jQuery DOM 元素并尝试从中使用 .detach,而不是像其他人一样使用 $(".query")。

想法?解决方法?谢谢!

【问题讨论】:

  • 你能创建一个演示吗?一个元素不能同时在两个地方。一定有.clone()在某处发生。

标签: javascript jquery dom appendto detach


【解决方案1】:

尝试改变这个:

this.transferTo = function(dom_parent)
{
    $(this.element).detach()
    $(this.element).appendTo(dom_parent);
}

到这里:

this.transferTo = function(dom_parent)
{
    var $thisElement = $(this.element);
    $thisElement.detach()
    $thisElement.appendTo(dom_parent);
}

【讨论】:

  • 不,但你的回答让我意识到我是个白痴。我使用的框架有问题,但所有这些代码都很好 -.- 谢谢...
  • 您应该可以跳过.detach() 步骤。如果您 .append().appendTo() 执行 move 的单个父级(如果您附加到执行 copy 的多个父级)。
猜你喜欢
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 2011-01-13
  • 2019-06-19
  • 2011-06-08
  • 1970-01-01
相关资源
最近更新 更多