Проверьте, существует ли элемент в jQuery [duplicate]

937

Как проверить, существует ли элемент, если элемент создан методом .append()? $('elemId').length не работает для меня.

  • 53
    .length прекрасно работает, смотрите здесь: jsfiddle.net/yahavbr/A9zW2, если вы использовали # опубликуйте свой код, и мы увидим, что вы сделали неправильно.
  • 0
    Используйте $ ('# selector'). Length и $ ('. Selector'). Length для идентификатора и селектора класса. $ ('опция выбора #'). size () для проверки размера выпадающего меню.
Теги:

8 ответов

1366
Лучший ответ

$('elemId').length не работает для я.

Вам нужно поставить # перед идентификатором элемента:

$('#elemId').length
---^

С ванильным JavaScript вам не нужен хеш (#), например. document.getElementById('id_here'), однако при использовании jQuery вам нужно поставить хеш для таргетинга элементов на основе id точно так же, как CSS.

  • 40
    Используются селекторы CSS, поэтому «#elementId» выбирает по элементу. "elementId" фактически выберет все emenets, теги которых названы "elementId"
  • 7
    @trejder Скорее всего, постер не знал о Vanilla JS, и когда они сказали «ванильный JavaScript», они на самом деле имели в виду базовый JavaScript («ванильный», как в «обычном», «не украшенный»).
Показать ещё 4 комментария
253

Попробуйте проверить длину селектора, если он возвращает вам что-то, тогда элемент должен существовать иначе.

 if( $('#selector').length )         // use this if you are using id to check
{
     // it exists
}


 if( $('.selector').length )         // use this if you are using class to check
{
     // it exists
}
  • 14
    Я считаю этот подход настолько не интуитивным. Это почти то же самое, что спрашивать, как определить, является ли число отрицательным, а затем кто-то говорит вам, что вам нужно написать код в сборке, а затем вручную перевернуть некоторые биты в регистрах ЦП, вместо простого вызова метода, подобного .isNegative (). Проверка значения свойства length создает беспорядок. Я бы предпочел увидеть что-то вроде метода .exists (), который мгновенно распознается при сканировании кода.
  • 3
    в некотором смысле, jquery сделал все возможное, чтобы сделать javascript более доступным, но все еще очень далек от идиоматичности
Показать ещё 2 комментария
73

Попробуйте следующее:

if ($("#mydiv").length > 0){
  // do something here
}

Свойство length будет возвращать ноль, если элемент не существует.

  • 10
    Нет необходимости в> 0, если оно равно 0, оно будет равно false.
  • 0
    Я не могу заставить это работать без включения > 0 . Есть идеи, почему это может произойти?
44

Как проверить, существует ли элемент

if ($("#mydiv").length){  }

Если это 0, он будет оценивать false, что-то большее, чем true.

Нет необходимости в более чем, чем сравнение.

  • 0
    это не работает для меня. Я использую браузер Firefox 32.02.
  • 0
    не стесняйтесь вставить свой фрагмент
Показать ещё 1 комментарий
22

ваш elemId, как следует из его названия, является атрибутом Id, это все, что вы можете сделать, чтобы проверить, существует ли он:

Ванильный JavaScript:, если у вас есть более продвинутые селекторы:

//you can use it for more advanced selectors
if(document.querySelectorAll("#elemId").length){}

if(document.querySelector("#elemId")){}

//you can use it if your selector has only an Id attribute
if(document.getElementById("elemId")){}

JQuery

if(jQuery("#elemId").length){}
  • 0
    Вам не нужно != null , как querySelector всегда возвращает null (что falsey) или элемент
  • 0
    Я бы все еще использовал if (document.querySelector("elemId") != null ) просто для улучшения читабельности кода
Показать ещё 5 комментариев
11

Вы также можете использовать запись в виде массива и проверить первый элемент. Первый элемент пустого массива или коллекции просто undefined, поэтому вы получаете нормальное поведение javascript с правдой/ложью:

var el = $('body')[0];
if (el) {
    console.log('element found', el);
}
if (!el) {
    console.log('no element found');
}
7

Вы можете использовать собственный JS для проверки существования объекта:

if (document.getElementById('elemId') instanceof Object){
    // do something here
}

Не забывайте, что jQuery - это не что иное, как сложная (и очень полезная) оболочка вокруг собственных команд и свойств Javascript

  • 4
    Вам не нужен instanceof Object
-10

Если у вас есть класс в элементе, вы можете попробовать следующее:

if( $('.exists_content').hasClass('exists_content') ){
 //element available
}
  • 9
    Если элемент не существует, как вы можете проверить класс.
  • 0
    вау не видел ответа

Ещё вопросы

Сообщество Overcoder
Наверх
Меню