2010-08-23 9 views
0

다음 스 니펫이 저에게 효과적이지 않습니다. 기본적으로 이름이 "documents []"이고 값이 item.id이고 반환 값이 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 

이 속성은 0보다 길이가 큰 값을 갖게됩니다. jquery의 selector를 사용하여 요소를 선택하면 해당 요소로 특수 배열 (또는 jquery 객체)을 만듭니다. 해당 선택기로 여러 요소를 선택할 수있는 경우 배열에 모든 요소가 포함되며 요소가 해당 선택기와 일치하지 않으면 배열에는 아무 것도없고 길이가 0 인 속성이됩니다.

희망이 있습니다.

2

.length을 사용할 수 있습니다. 그 요소는 DOM에서 사용할 수있는 경우 $('lol').length 반환 0$('body').length 동안 반환 1.

+0

그렇습니다. 선택기와 컨텍스트 (선택적으로 컨텍스트가있는)의'jQuery' 함수 호출은 항상 'length' 속성 또는 일치하는 요소의 수를 포함하는 jQuery 컬렉션 객체를 반환합니다. –

관련 문제