Как вы можете определить разницу между сгенерированным и выбранным элементом? - PullRequest
0 голосов
/ 14 июля 2010

Возможно ли в API jQuery или в DOM проверить, существует ли элемент на странице или нет?

Рассмотрим эти две переменные:

var selected = $('span#mySpan');
var created = $('<span id="mySpan">Testing</span>');

Обе будутвернуть объект jQuery, содержащий элемент span.Есть ли способ сказать, что первый существует на странице, а второй нет?

Ответы [ 2 ]

2 голосов
/ 14 июля 2010

Попробуйте

$(created).parents("html").length

Вот еще несколько способов сделать то же самое:

$(document).find(created).length
$(created).parents(document).length

Или используя метод contains, который был построен для этогозадача.Он принимает только узлы DOM, поэтому нам нужно развернуть его из объекта jQuery

$.contains(document, created.get(0))

Чистым способом DOM будет использование метода Node.compareDocumentPosition.В приведенном выше примере,

// get the DOM node
var createdNode = created.get(0);
var position = document.compareDocumentPosition(createdNode);
var isNotInDocument = (position & Node.DOCUMENT_POSITION_DISCONNECTED) != 0;
0 голосов
/ 14 июля 2010

Единственный способ, которым я могу думать об этом, помимо какого-то расширения базового API-интерфейса DOM, - это получить копию всего дерева DOM и затем сравнить его с ним.твой пример, не будет ли у твоего второго пролета родителя?В корректном HTML у пролета всегда должен быть родитель.Просто такие правила, при условии допустимого HTML / XHTML, могут быть полезны.

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