jQuery: проверьте, существует ли div с определенным именем класса - PullRequest
208 голосов
/ 26 апреля 2011

Используя jQuery, я программно генерирую кучу div вот так:

<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>

Где-то еще в моем коде мне нужно определить, существуют ли эти DIV. Имя класса для div одинаково, но идентификатор меняется для каждого div. Есть идеи, как их обнаружить с помощью jQuery?

Ответы [ 16 ]

373 голосов
/ 26 апреля 2011

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

if ($(".mydivclass")[0]){
    // Do something if class exists
} else {
    // Do something if class does not exist
}

В этом случае, если в первом ([0]) индексе есть истинное значение, то предположим, что класс существует.

Изменить 04/10/2013: Я создал тестовый пример jsperf здесь .

95 голосов
/ 26 апреля 2011

Вы можете использовать size(), но jQuery рекомендует использовать длину, чтобы избежать издержек при вызове другой функции:

$('div.mydivclass').length

Итак:

// since length is zero, it evaluates to false
if ($('div.mydivclass').length) {

http://api.jquery.com/size/

http://api.jquery.com/length/

UPDATE

Выбранный ответ использует тест производительности, но он слегка некорректен, поскольку он также включает в себя выбор элементов как часть теста, что здесь не то, что тестируется. Вот обновленный перф тест:

http://jsperf.com/check-if-div-exists/3

Мой первый прогон теста показывает, что поиск свойства выполняется быстрее, чем поиск по индексу, хотя в IMO это довольно незначительно. Я все еще предпочитаю использовать длину, так как для меня это имеет больше смысла в отношении намерений кода, а не в более кратких условиях.

68 голосов
/ 21 января 2015

без jQuery:

Собственный JavaScript всегда будет быстрее. В этом случае: (пример)

if (document.querySelector('.mydivclass') !== null) {
    // .. it exists
}

Если вы хотите проверить, содержит ли родительский элемент другой элемент с определенным классом, вы можете использовать любой из следующих. (пример)

var parent = document.querySelector('.parent');

if (parent.querySelector('.child') !== null) {
    // .. it exists as a child
}

В качестве альтернативы вы можете использовать метод .contains() для родительского элемента. (пример)

var parent = document.querySelector('.parent'),
    child = document.querySelector('.child');

if (parent.contains(child)) {
    // .. it exists as a child
}

.. и, наконец, если вы хотите проверить, содержит ли данный элемент только определенный класс, используйте:

if (el.classList.contains(className)) {
    // .. el contains the class
}
53 голосов
/ 26 апреля 2011
$('div').hasClass('mydivclass')// Returns true if the class exist.
45 голосов
/ 11 января 2014

Вот решение без использования Jquery

var hasClass = element.classList.contains('class name to search');
// hasClass is boolean
if(hasClass === true)
{
     // Class exists
}

ссылка ссылка

15 голосов
/ 26 апреля 2011

Все довольно просто ...

if ($('.mydivclass').length > 0) {
  //do something
}
10 голосов
/ 26 апреля 2011

Для проверки div элементов явно:

if( $('div.mydivclass').length ){...}

6 голосов
/ 06 июля 2015

Простой код приведен ниже:

if ($('.mydivclass').length > 0) {
   //Things to do if class exist
}

Чтобы скрыть div с идентификатором участника:

if ($('#'+given_id+'.mydivclass').length > 0) {
   //Things to do if class exist
}
3 голосов
/ 23 августа 2017

Вот несколько способов:

1.  if($("div").hasClass("mydivclass")){
    //Your code

    //It returns true if any div has 'mydivclass' name. It is a based on the class name
    }

2. if($("#myid1").hasClass("mydivclass")){
    //Your code


    //  It returns true if specific div(myid1) has this class "mydivclass" name. 
    //  It is a  based on the specific div id's.
    }           
3. if($("div[class='mydivclass']").length > 0){
    //Your code

   // It returns all the divs whose class name is "mydivclass"
   //  and it's length would be greater than one.
    }

Мы можем использовать любой из способов, определенных abobe, исходя из требований.

2 голосов
/ 23 апреля 2018
var x = document.getElementsByClassName("class name");
if (x[0]) {
alert('has');
} else {
alert('no has');
}
...