4

我知道有很多类似的问题,我已经浏览过它们。这还不够。所以。

我有这种情况,我需要复制一个元素并知道我从中克隆的原始元素,所以我这样做很丑:

<div id="main">
  <p>Hello</p>
</div>

然后

$(somewhere).append(
                    $('#main')
                    .clone()
                    .attr('src', 'main')
));

现在这非常难看,因为我从我正在克隆的原始元素中附加了 ID。在我的情况下,我不知道元素是否有 ID,所以我可以生成一个随机的并像这样分配:

var id = $(element).attr('id');

if (!id) {
  var id = 'id_'+ Math.round(Math.random()*99999999);
  $(element).attr('id', id);
}

$(somewhere).append(
                    $(element)
                    .clone()
                    .attr('src', id)
));

我的解决方案对我来说似乎很脏,当然我有可能发生冲突,所以......我想知道从另一个元素引用 DOM 元素的任何干净方法。

更新

所以总而言之,我使用了 jQuery .uniqueId().,并通过.attr()like简单地附加了元素 ID$(el).attr('src', $(parent).attr('id') );

4

3 回答 3

2

使用类名并使用自定义属性修改新的(克隆的)元素:

HTML

<div class="main">
  <p>Hello</p>
</div>

jQuery

currentObj = $(".main");

//Object of the cloned element
clonedElement = currentObj.clone().addClass("cloned");

//Assign a reference with custom property
clonedElement[0].clonedFrom = currentObj;

$(somewhere).append(clonedElement);
于 2013-06-11T11:50:54.543 回答
2

您可以在 DOM 中查询具有您生成的 ID 的元素。如果没有找到,那么它是唯一的,如果有这样的元素重复使用新的随机 ID。

于 2013-06-11T11:31:32.180 回答
1

试试这个方法

<div class="main">
<p>Hello</p>
</div>

//jQuery代码

currentObj = $(".main");

//Object of the cloned element
clonedElement = currentObj.clone();

$(somewhere).append(clonedElement);

如果你想为元素添加一个唯一的 ID,那么你可以从 jquery1.9.1 开始这样做

currentObj.uniqueId();
clonedElement.uniqueId();
于 2013-06-11T11:32:54.453 回答