2010-08-23 2 views
0

Следующий фрагмент не работает для меня. В основном я хочу проверить, есть ли элемент ввода с именем «документы []» и значение item.id и return void.Проверьте, существует ли элемент в DOM

Я думал, что эта линия сделает это: $("input [name='documents[]'][value='"+item.id+"'") != false.

Однако утверждение возвращает true каждый раз. Я просмотрел документацию для конструктора jQuery и ничего не упоминает о возврате false, если ни один элемент не найден для селектора.

Как я могу определить, не имеет ли селектор каких-либо элементов?

$.ajax({ 
     url:'/myid/documents/json_get_documents/'+request.term, 
     dataType:"json", 
     success: function(data) { 
      response($.map(data, function(item){ 
       if($("input [name='documents[]'][value='"+item.id+"'") != false) { 
        return; //This item has already been added, don't show in autocompete 
       } 
       return { 
        label: '<span class="file">'+item.title+'</span>', 
        id: item.id, 
        value: 'Search by title' 
       } 
      })) 
     } 
    }); 

ответ

3
$("input [name='documents[]'][value='"+item.id+"'"]).length 

Это свойство будет иметь значение длины больше нуля, если этот элемент доступен в DOM. Вы видите, когда вы выбираете элемент с помощью селектора jquery, он создает специальный массив (или вы можете сказать, объект jquery) с этим элементом. Если с этим селектором можно выбрать несколько элементов, тогда массив будет содержать все из них, и если ни один элемент не будет соответствовать этому селектору, массив не будет иметь ничего, и в этом случае его свойство length будет равно нулю.

Надеюсь, что это поможет.

2

Вы можете использовать .length. $('lol').length возвращает 0 в то время как $('body').length возвращает 1.

+0

Да, вызов функции 'jQuery' (с селектором и, при необходимости, контекстом) всегда будет возвращать объект коллекции jQuery, который содержит свойство' length', или количество элементов, сопоставленных. –

Смежные вопросы