31

이 질문에는 이미 답변이 있습니다.

HTML 코드

<div class="parent1">
    <div class="child1">Child1</div>
    <div class="child2">Child2</div>
    <div class="child3">Child3</div>
</div>

<div class="parent2">
    <div class="child1">Child1</div>
    <div class="child2">Child2</div>
</div>

jQuery 코드

alert($(".parent1").find(".child3").text());
alert($(".parent2").find(".child3").text());

내 질문은 확인하는 방법입니다.find함수는 true 또는 false를 반환합니까?

위의 코드에서는 빈 값을 반환합니다.parent1수업이있다.child3클래스 어디에서parent2수업에는 없다.child3수업.

JS 피들


  • find부울 값을 반환하지 않습니다. - undefined

6 답변


30

너는 단지 사용할 수 없었다.find...에서if조건. 너는 사용할 수있어.has또는length재산.

var elm = $('.parent1');
if(elm.has('.child3')){
   var child3 = elm.find('.child3');
}

또는 단순히 이것을 좋아하십시오.

var child3 = $('.parent1').find(".child3");
if(child3.length > 0) {
  // child3 is present
}


  • 빠른 응답을 주셔서 감사합니다. - Sadikhasan
  • @ Sadikhasan 도움이 된 것을 기쁘게 생각합니다 :) - Amit Joki
  • 문서에 따르면 (api.jquery.com/has) ' 메서드는 jQuery를 반환하고 부울은 반환하지 않습니다. 이 대답의 첫 번째 예는 항상 true를 반환한다는 것을 의미합니다. 설명서 페이지의 예제를 사용하여 반환 된 객체의 length 속성이 0보다 크고 단순히 반환 된 것이 아닌지 확인해야합니다. - Mark Sizer
  • has나를 위해 일하지 않는다. - mario1ua

7

당신이 사용할 수있는.length해당 요소를 확인하는 속성

var elem = $(".parent2").find(".child3");
if(elem.length){
    alert(elem.text());
}else{
    alert('Element doesnt exists')
}

또는, 다음을 사용할 수 있습니다..has()

var elem = $(".parent2");
if(elem.has(".child3")){
    alert(elem.find(".child3").text());
}else{
    alert('Element doesnt exists')
}


  • 빠른 응답을 주셔서 감사합니다. - Sadikhasan

5

선택기를 래핑 할 때마다$()항상 일치하는 요소의 배열을 포함하는 jQuery 객체를 반환합니다.

따라서length일치하는 항목이 있는지 테스트 할 속성

var $collection = $(".parent2").find(".child3").length;
if ($collection.length)....

다음과 같은 다른 접근법을 사용할 수도 있습니다.is()

var #collection = $(".parent2");
if($collection.children().is(".child3") /* returns tru if there are matches


  • 빠른 응답을 주셔서 감사합니다. - Sadikhasan
  • 많은 접근법이 있습니다. 유스 케이스에 다소 의존합니다. - charlietfl

4

마찬가지로docs forfind()설명,find()jQuery 객체를 반환합니다. 그것은 성공적인 질의를 검사 할 수있는 길이의 속성을 가지고 있습니다.

if($(".parent1").find(".child3").length > 0) {
    alert("parent1 child3");
}
if($(".parent2").find(".child3").length > 0) {
    alert("parent2 child3");
}


  • 빠른 응답을 주셔서 감사합니다. - Sadikhasan

2

.parent2에는 .child3 요소가 없습니다.

alert($(".parent2").find(".child3").text());

이 시도:

alert($(".parent2").find(".child2").text());

마지막 항목 만 원할 경우이 방법을 사용하십시오.

alert($(".parent1").find("[class^=child]:last").text());
alert($(".parent2").find("[class^=child]:last").text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent1">
  <div class="child1">Child1</div>
  <div class="child2">Child2</div>
  <div class="child3">Child3</div>
</div>

<div class="parent2">
  <div class="child1">Child1</div>
  <div class="child2">Child2</div>
</div>


  • 빠른 응답을 주셔서 감사합니다. - Sadikhasan

2

console.log(Boolean($(".parent1").find(".child3").length));
console.log(Boolean($(".parent2").find(".child3").length));
    
console.log(!!$(".parent1").find(".child3").length);
console.log(!!$(".parent2").find(".child3").length);

console.log($(".parent1").find(".child3").length > 0);
console.log($(".parent2").find(".child3").length > 0);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent1">
  <div class="child3"></div>
</div>

<div class="parent2"></div>

연결된 질문


관련된 질문

최근 질문