Есть ли функция "существует" для jQuery? - PullRequest
2559 голосов
/ 27 августа 2008

Как я могу проверить наличие элемента в jQuery?

Текущий код, который у меня есть, таков:

if ($(selector).length > 0) {
    // Do something
}

Есть ли более элегантный способ подойти к этому? Возможно, плагин или функция?

Ответы [ 40 ]

9 голосов
/ 25 февраля 2009
if ( $('#myDiv').size() > 0 ) { //do something }

size() считает количество элементов, возвращаемых селектором

9 голосов
/ 26 июля 2016

Да Лучший способ сделать это:

По JQuery:

if($("selector").length){
   //code in the case
}

selector может быть Element ID ИЛИ Element Class

OR

Если вы не хотите использовать библиотеку jQuery, вы можете добиться этого с помощью Core JavaScript:

По JavaScript:

if(document.getElementById("ElementID")) {
    //Do something...
}
6 голосов
/ 18 августа 2018

Попробуйте это.

простой и короткий и применимый во всем проекте :

jQuery.fn.exists=function(){return !!this[0];}; //jQuery Plugin

Использование:

console.log($("element-selector").exists());

_________________________________

ИЛИ ДАЖЕ ШОРТЕР : ( когда вы не хотите определять плагин jQuery):

if(!!$("elem-selector")[0]) ...;

или даже

if($("elem-selector")[0]) ...;
4 голосов
/ 16 октября 2017

Простая служебная функция для идентификатора и селектора класса.

   function exist(IdOrClassName, IsId) {
        var elementExit = false;
        if (IsId) {
            elementExit= $("#" + "" + IdOrClassName + "").length ? true : false;
        }
        else {
                elementExit = $("." + "" + IdOrClassName + "").length ? true : false;
        }
        return elementExit;
    } 

вызывая эту функцию как ниже

    $(document).ready(function () {
            $("#btnCheck").click(function () {
//address is the id so IsId is true. if address is class then need to set IsId false
                if (exist("address", true)) {
                    alert("exist");
                }
                else {
                    alert("not exist");
                }

            });
        });
3 голосов
/ 20 декабря 2018

Просто проверьте длину селектора, если он больше 0, тогда он возвращает true, иначе false.

Для ID:

 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
}

Для выпадающего списка:

if( $('#selector option').size() ) {   // use this if you are using dropdown size to check

   // it exists
}
3 голосов
/ 17 марта 2018

Все ответы не рабочие пуленепробиваемые , чтобы проверить наличие элемента в jQuery. После многих лет кодирования только это решение не выдает никаких предупреждений о существовании или нет:

if($(selector).get(0)) { // Do stuff }

Или поручить вместо этого в начале вашей функции:

if(!$(selector).get(0)) return;

Разъяснения

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

2 голосов
/ 19 декабря 2018

Я использую это:

 if($("#element").length > 0){
     //the element exists in the page, you can do the rest....
    }

Очень просто и легко найти элемент.

0 голосов
/ 23 августа 2018

Используйте querySelectorAll с forEach, не нужно if и дополнительное назначение:

document.querySelectorAll('.my-element').forEach((element) => {
  element.classList.add('new-class');
});

как противоположность:

const myElement = document.querySelector('.my-element');
if (myElement) {
  element.classList.add('new-class');
}
0 голосов
/ 16 августа 2018

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

if($(selector).val())
0 голосов
/ 23 августа 2016

Используйте следующий синтаксис, чтобы проверить, существует ли элемент с помощью jQuery.

let oElement = $(".myElementClass");
if(oElement[0]) {
    // Do some jQuery operation here using oElement
}
else {
    // Unable to fetch the object
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...