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

あなただけでは使えないfindif調子。あなたが使用することができます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プロパティがゼロより大きいかどうかを確認する必要があります。単に何かが返されたことではありません。 - 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

としてのドキュメントfind()説明する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>

リンクされた質問


関連する質問

最近の質問