Как найти, существует ли div с определенным идентификатором в jQuery?

У меня есть функция, которая добавляет

к элементу при щелчке. Функция получает текст щелкнутого элемента и присваивает его переменной с именем name . Затем эта переменная используется как id

добавленного элемента.

Мне нужно увидеть, существует ли id

с name уже до добавления этого элемента, но я не знаю, как его найти.

Вот мой код:

 $("li.friend").live('click', function() { name = $(this).text(); // if-statement checking for existence of 
should go here // If
does not exist, then append element $("div#chatbar").append("
" + name + "
"); // Else alert('this record already exists'); });

Это кажется довольно простым, но я получаю сообщение об ошибке « Неожиданный конец файла при поиске имени classа» . Я понятия не имею, что это значит.

 if (document.getElementById(name)) { $("div#" + name).css({bottom: '30px'}); } else { $("div#page-content div#chatbar").append("
" + name + "
"); }

Более того, я хочу, чтобы иметь возможность удалить этот элемент, если я закрою его, который затем должен удалить div id [name] из документа, но .remove() не делает этого.

Вот код для этого:

 $(".mini-close").live('click', function(){ $(this).parent().remove(); }); 

Я добавил .mini-close к функции append как дочерний .labels чтобы был способ закрыть из приложенного

если это необходимо. После нажатия кнопки .mini-close и повторного щелчка на том же имени от li.friends он все еще находит div id [name] и возвращает первую часть моего оператора if .

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

 if($("#" + name).length == 0) { //it doesn't exist } 

Полная версия:

 $("li.friend").live('click', function(){ name = $(this).text(); if($("#" + name).length == 0) { $("div#chatbar").append("
" + name + "
"); } else { alert('this record already exists'); } });

Или версия, отличная от jQuery для этой части (поскольку это идентификатор):

 $("li.friend").live('click', function(){ name = $(this).text(); if(document.getElementById(name) == null) { $("div#chatbar").append("
" + name + "
"); } else { alert('this record already exists'); } });

Ответ Ника отвечает. Вы также можете использовать возвращаемое значение getElementById непосредственно как свое условие, а не сравнивать его с нулевым (в любом случае работает, но я лично считаю этот стиль немного более удобочитаемым):

 if (document.getElementById(name)) { alert('this record already exists'); } else { // do stuff } 

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

 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 для id и второе для classа.

 if($("#id").length) /*exists*/ if(!$("#id").length) /*doesn't exist*/ 
 if ( $( "#myDiv" ).length ) { //id id ( "#myDiv" ) is exist this will perform $( "#myDiv" ).show(); } 

Другой сокращенный путь:

  $( "#myDiv" ).length && $( "#myDiv" ).show(); 

Вы можете проверить, используя jquery, просто так:

 if($('#divId').length!==0){ Your Code Here } 

Самый простой способ – это ..

 if(window["myId"]){ // .. } 

Это также входит в спецификации HTML5: https://www.w3.org/TR/html5/single-page.html#accessing-other-browsing-contexts#named-access-on-the-window-object

 window[name] Returns the indicated element or collection of elements. 

Вы можете обрабатывать его по-разному,

objective состоит в том, чтобы проверить, существует ли div, а затем выполнить код. Просто.

Состояние:

 $('#myDiv').length 

Заметка:

 #myDiv -> < div id='myDiv' > 
.myDiv -> < div class='myDiv' >

Это будет возвращать число каждый раз, когда он будет выполнен, поэтому, если нет div, он даст Zero [0], и поскольку мы не можем представить в бинарном виде как false, вы можете использовать его в инструкции if. И вы можете использовать его как сравнение с ни одним номером. в то время как любые три приведенных ниже утверждения

 // Statement 0 // jQuery/Ajax has replace [ document.getElementById with $ sign ] and etc // if you don't want to use jQuery/ajax if (document.getElementById(name)) { $("div#page-content div#chatbar").append("
" + name + "
"); } // Statement 1 if ($('#'+ name).length){ // if 0 then false ; if not 0 then true $("div#page-content div#chatbar").append("
" + name + "
"); } // Statement 2 if(!$('#'+ name).length){ // ! Means Not. So if it 0 not then [0 not is 1] $("div#page-content div#chatbar").append("
" + name + "
"); } // Statement 3 if ($('#'+ name).length > 0 ) { $("div#page-content div#chatbar").append("
" + name + "
"); } // Statement 4 if ($('#'+ name).length !== 0 ) { // length not equal to 0 which mean exist. $("div#page-content div#chatbar").append("
" + name + "
"); }

Вот функция jQuery, которую я использую:

 function isExists(var elemId){ return jQuery('#'+elemId).length > 0; } 

Это вернет логическое значение. Если элемент существует, он возвращает true. Если вы хотите выбрать элемент по имени classа, просто замените # на .

поместите идентификатор, который вы хотите проверить в jquery, это метод.

 var idcheck = $("selector").is("#id"); if(idcheck){ // if the selector contains particular id // your code if particular Id is there } else{ // your code if particular Id is NOT there } 
  • ТипError: $ .browser не определен
  • jquery loop on Json data с использованием $ .each
  • Почему я получаю запрос OPTIONS вместо запроса GET?
  • Как использовать плагин jQuery с угловым 4?
  • Как очистить сообщения об ошибках проверки jQuery?
  • Обновление плагина jQuery Tablesorter после удаления строки из DOM
  • Что делает объект jQuery отображаться как массив в инструментах разработчика Chrome?
  • Событие bootstrap jquery show.bs.modal не будет срабатывать
  • Добавьте разделитель тысяч в число с Javascript или jQuery?
  • Проверка jQuery: изменение сообщения об ошибке по умолчанию
  • jQuery: Выполнение синхронных запросов AJAX
  • Interesting Posts
    Давайте будем гением компьютера.