如何从DOM元素引用DOM元素?

时间:2013-06-11 11:27:43

标签: javascript

我知道有很多类似的问题,我已经仔细研究过了。这还不够。如此。

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

<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') );

3 个答案:

答案 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();