我知道有很多类似的问题,我已经仔细研究过了。这还不够。如此。
我有这种情况,我需要复制一个元素并知道我克隆的原始元素,所以我这样做是丑陋的:
<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()
添加了元素ID,如$(el).attr('src', $(parent).attr('id') );
答案 0 :(得分:2)
您可以在DOM中查询具有您生成的ID的元素。如果没有找到任何东西,那么它是唯一的,如果有这样的元素重复一个新的随机ID。
答案 1 :(得分: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);
答案 2 :(得分:1)
以这种方式试试
<div class="main">
<p>Hello</p>
</div>
// Jquery Code
currentObj = $(".main");
//Object of the cloned element
clonedElement = currentObj.clone();
$(somewhere).append(clonedElement);
如果你想为元素添加一个唯一的ID,那么你可以从jquery1.9.1开始这样做
currentObj.uniqueId();
clonedElement.uniqueId();