2013-06-11 3 views
4

Я знаю, что есть много подобных вопросов, и я просмотрел их. Этого было недостаточно. Так.Как я могу ссылаться на элемент DOM на элемент DOM?

меня такая ситуация, когда мне нужно сделать дубликат элемента и знать исходный элемент я клонированный из, так что я делаю это так что некрасиво:

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

затем

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

Теперь это очень уродливо, так как я прикреплял 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 из другого элемента.

UPDATE

Итак, в заключение я использовал JQuery-х .uniqueId(). и просто прикрепляются элемент ID с помощью .attr() как $(el).attr('src', $(parent).attr('id'));

ответ

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); 
+1

+1 Несколько лучше, чем мой –

2

Вы можете запросить DOM для элемента с идентификатором, который вы сгенерировали. Если ничего не найдено, то оно уникально, если такой элемент повторяется с новым случайным идентификатором.

+0

Это так же, как я описал, но я чувствую, что должен быть другой способ .. Еще +1 –

1

Попробуй так

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

// Jquery код

currentObj = $(".main"); 

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

$(somewhere).append(clonedElement); 

Если вы хотите добавить уникальный идентификатор элементов, то вы можете сделать это, как это от jquery1.9.1 года

currentObj.uniqueId(); 
clonedElement.uniqueId(); 
+0

Вы не показывают второй часть вопроса. Он хочет знать элемент происхождения. – thinklinux

+1

+1 для uniqueId. Это сэкономит мне немного усилий! ;) –

Смежные вопросы