Используя jQuery, я программно генерирую кучу div
таких:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
Где-то еще в моем коде мне нужно определить, существуют ли эти DIV. Имя класса для div одинаково, но идентификатор меняется для каждого div. Есть идеи, как их обнаружить с помощью jQuery?
:first
там помогло бы производительность (не знаю , если производительность является важным критерием для @itgorilla), но будет ли это действительно изменяется дико в браузере, по- видимому , потому что она изменяет собственные функции JQuery можно использовать сделать выбор. Вот тестовый случай, когда div существует , а вот тот, где его нет .if (!$(".mydivclass")[0]){ /* do stuff */ }
Вы можете использовать
size()
, но jQuery рекомендует использовать length, чтобы избежать издержек при вызове другой функции:Так:
http://api.jquery.com/size/
http://api.jquery.com/length/
ОБНОВИТЬ
Выбранный ответ использует тест производительности, но он слегка ошибочен, поскольку он также включает в себя выбор элемента как часть теста, что здесь не то, что тестируется. Вот обновленный перф тест:
http://jsperf.com/check-if-div-exists/3
Мой первый прогон теста показывает, что поиск свойств выполняется быстрее, чем поиск по индексу, хотя в IMO это довольно незначительно. Я все еще предпочитаю использовать длину, так как для меня это имеет больше смысла в отношении намерений кода, а не в более кратких условиях.
источник
.length
настоящее время вы получаете лучшую среднюю производительность.Без jQuery:
Родной JavaScript всегда будет быстрее. В этом случае: (пример)
Если вы хотите проверить, содержит ли родительский элемент другой элемент с определенным классом, вы можете использовать любой из следующих. (пример)
Кроме того, вы можете использовать
.contains()
метод родительского элемента. (пример)... и, наконец, если вы хотите проверить, содержит ли данный элемент только определенный класс, используйте:
источник
источник
div
элементов на странице, а затем вернуться и переберите их, чтобы увидеть, есть ли у них этот класс, все, чтобы выбросить массив в конце).hasClass
на 33% быстрее, чем остальные селекторы здесь. Проверьте jsperf.com/hasclass00div
элемента), который обходит ту проблему, которую я выделил (построение массива). Попробуйте это с помощью нескольких divs : jsperf.com/hasclass00/2 Это на 63% медленнее для моей копии Chrome, на 43% медленнее для моей копии Firefox, на 98% (!) Медленнее в Opera. Но более того, имеет смысл, что составлять список элементов div и затем искать их медленнее, чем предоставлять механизму селектора всю необходимую информацию.Вот решение без использования Jquery
ссылка ссылка
источник
Это довольно просто ...
источник
Чтобы проверить
div
элементы явно:if( $('div.mydivclass').length ){...}
источник
.mydivclass
зависимости от браузера и версии jQuery.div
часть селектора.Простой код приведен ниже:
Чтобы скрыть div с ID конкретного участника:
источник
Вот несколько способов:
Мы можем использовать любой из способов, определенных abobe, исходя из требований.
источник
size()
Метод просто возвращает количество элементов , которое выбирает селектор JQuery - в этом случае количество элементов с классомmydivclass
. Если он возвращает 0, выражение ложно, и, следовательно, его нет, и если он возвращает любое другое число, div должен существовать.источник
length
свойство? Кроме того, это проверяет любой элемент с этим классом, а не толькоdiv
. (Теперь, это может быть то, что имел в виду ОП, даже если не то, что он / она сказал.) См . Ответ Стефана Кендалла, который делает то, что на самом деле сказал ОП (хотя, опять же, они могли иметь в виду то, что вы сделали).div
касается вашего второго замечания - да, я изменил свой первоначальный ответ, чтобы удалить деталь, по двум причинам: 1) селектор не ограничен тем фактом, что OP используетdiv
элемент (он может измениться в будущем), и 2) в В большинстве браузеров и версий jQuery, AFAIK, это должно быть быстрее.length
Свойство есть, почему бы не использовать его? Но если это твои предпочтения, честно говоря. С другой стороны, я не знал, что ты отредактировал это. Если бы я собирался сделать это, я бы оставил это (опять же, он специально сказал: «... если div с ...» (мой акцент), а затем дополнительно упомянул, что если это не имеет значения, если это былdiv
или нет, вы могли бы бросить эту часть. Но что угодно. :-)size()
способ дать понять, что вы подсчитываете количество элементов в селекторе jQuery, а не просто какой-либо старый массив. Но опять же, это только мое предпочтение.проверьте, существует ли div с определенным классом
источник
источник
источник
В Jquery вы можете использовать как это.
С помощью JavaScript
источник
Вот очень примерное решение для проверки класса (hasClass) в Javascript:
источник
Лучший способ в Javascript:
источник
if ($ ("# myid1"). hasClass ("mydivclass")) {// Делать что-либо}
источник
Используйте это для поиска по всей странице
источник