Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как узнать есть ли элемент в dom? (https://javascript.ru/forum/jquery/17920-kak-uznat-est-li-ehlement-v-dom.html)

FRIE 08.06.2011 19:52

Как узнать есть ли элемент в dom?
 
мне нужно узнать присутствует ли элемент с id redakt_form на странице и в зависимости от этого выполнить действие
напишите строчку плиз, я гуглил и не нагуглил, забыл как делать (

я сделал вот так if($("#redakt_form")=false){} но чето не работает

ksa 08.06.2011 20:54

Как вариант

<p id='redakt_form'></p>
<script>
if (document.getElementById('redakt_form')) alert('Элемент существует')
</script>

Sweet 08.06.2011 21:04

Цитата:

Сообщение от FRIE
чето не работает

Во-первых, оператор сравнения - это == или ===, а не =. А во-вторых, с чего ты решил, что jQuery возвращает false???
Я не знаток jQuery, так что предложу:
if( $("#redakt_form").length === 0 ){}

FRIE 09.06.2011 13:15

Спасибо парни! тупикую просто

Riim 09.06.2011 15:06

Немного усложню задачу, т. к. сам недавно столкнулся: нужно узнать есть ли элемент в document, при этом у элемента может и не быть id (устанавливать самому нельзя), но ссылка на него уже есть в переменной. Ищется максимально быстрый способ. Я пока пришел к такому:
if (elem.offsetParent || elem == document.documentElement || elem == document.body) {

}

, но кажется мне, что можно еще проще.

Sweet 09.06.2011 15:24

Может:
if(element.parentNode === null) alert("Элемент не в ДОМе");
???

nikita.mmf 09.06.2011 18:04

Самое интересное, что это не проходит)

Пример я удалил кусок dom дерева и если там есть элемент, который я проверяют на "в dom'e" то он вернет родителя не смотря ни на что.

Про id, почему нельзя добавлять? Пишите функцию, которая генерирует уникальные id и вставляете их, также для защиты от css можно добавлять впереди ":".

function elementInDOM( elem ) {
  var elInDOM;
  if ( elem.id ) {
    elInDOM = document.getElementById( elem.id );
  } else {
     elem.id = ":" + uniqId();
     elInDOM = document.getElementById( elem.id );
     elem.removeAttribute("id");
  }
  return !!elInDOM;
}

Riim 10.06.2011 02:01

Цитата:

Сообщение от Sweet
Может:
if(element.parentNode === null) alert("Элемент не в ДОМе");

легко обмануть, хотя в некоторых случаях сгодится.

Цитата:

Сообщение от nikita.mmf
Про id, почему нельзя добавлять? Пишите функцию, которая генерирует уникальные id и вставляете их, также для защиты от css можно добавлять впереди ":"

1. может приводить к reflow.
2. легко обмануть, можно просто создать элемент с id который уже существует в dom (не тот случай когда uniqId() работает, а когда вручную существующий id создается).
3. в десятки раз медленней.

Matre 10.06.2011 12:30

Цитата:

нужно узнать есть ли элемент в document
Я наверно что-то не так понял, но можно же так:

elem.ownerDocument == document;

nikita.mmf 10.06.2011 12:44

Цитата:

Сообщение от Riim (Сообщение 108031)
1. может приводить к reflow.

Про это совершенно не подумал, тут вы аюсолютно правы(просто у меня была такая задача, но у меня у всех элементов были 'id')


Часовой пояс GMT +3, время: 10:22.