jQuery .data () для хранения идентификатора для последующего доступа? или другой метод? - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь добавить div к телу, поэтому

$('<div>').appendTo(document.body);

Однако вместо того, чтобы дать этому div атрибут атрибута ID, чтобы я мог получить к нему доступ позже, я хотел бы использовать jQuery.data () для доступа к этому div позже, чтобы к нему можно было применить действия.

$('<div>').data('#myid').appendTo(document.body);

теперь, как мне получить к нему доступ позже.

Ответы [ 3 ]

4 голосов
/ 26 января 2011
var later = $('<div>').appendTo(document.body);
// ...
later.actions();
1 голос
/ 26 января 2011

Это звучит довольно странно.Даже если вы установите какое-либо значение id для data-expando, вы не будете знать, где получить к нему доступ позже.У вас нет ссылки на элемент, который содержит это свойство данных.

Лучший способ сохранить ссылку для вновь созданного узла - сохранить его в локальной переменной.

var $newdiv = $('<div>').appendTo(document.body);

Ссылка на ваш комментарий

Почти все методы jQuery возвращают упакованный набор, содержащий объекты jQuery.Эти объекты, в свою очередь, содержат ссылку на узел DOM.Вы можете думать об этом как о мосте.С одной стороны это ваш ECMAland (Javascript), а с другой стороны, это DOMland.Если вы пересекаете этот мост, чтобы получить ссылку от узла DOM (что, кстати, дорого), вы можете (и должны!) Сохранить эту ссылку в ECMAland.В следующий раз, когда вы захотите получить доступ к DOM node, вам не нужно пересекать мост и платить дорогую плату, у вас все еще есть эти ссылки и вы можете манипулировать узлом DOM.

0 голосов
/ 26 января 2011

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

for (var i = 0; i < document.getElementsByTagName("*").length; i++) {
    if ($(document.getElementsByTagName("*")[i]).data("isMyDiv")) {
         var myDiv = $(document.getElementByTagName("*")[i]);
    } 
}

if (myDiv !== undefined) {
   // do stuff
}

В качестве альтернативы вы можете написать эффективный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...