2017-11-20 7 views
0

私はリストとサブリストを扱い、jQuery経由で項目にアクセスしようとしています。次の要素を見つけることが期待通りに機能していません

目的は各リストアイテムをチェックし、サブリストがあるかどうかをチェックすることです!

しかし、 ".next(" ul ")"を使用すると常にtrueが返されます。

FALSE(次の要素にはULがない)、TRUE(次の要素にULがあります)、FALSE(次の要素にULがありません)、TRUE第4の項目は次の要素としてULを有する)。

私は間違っていますか?

ありがとうございました。ここで

はFIDDLEです:https://jsfiddle.net/rw1rvamo/1/

<ul> 
      <li> 
       <div class="container"> 
        <span class="icon">.</span> 
        <span class="text"> Item</span> 
        <span class="arrow"></span> 
       </div><!-- container --> 
      </li> 
      <li> 
       <div class="container"> 
        <span class="icon">.</span> 
        <span class="text"> Item</span> 
        <span class="arrow"></span> 
       </div><!-- container --> 
       <ul> 
        <li>sub item 1</li> 
        <li>sub item 2</li> 
        <li>sub item 3</li> 
        <li>sub item 4</li> 
       </ul> 
      </li> 
</ul> 

、スクリプト:

$(".container").each(function() { 
     if($(".container").next().is('ul')) { 
      var oi = $(".container").next(); 
      alert("TRUE"); 
     } 
     else { 
      alert("FALSE"); 
     } 
});  

答えて

0

あなたは$(this)代わりの​​

を使用することにより、ループ内のコンテナクラスのインスタンスをチェックする必要があります
$(".container").each(function() { 
    var $cont = $(this) 
    if ($cont.next().is('ul')) { 
    var oi = $cont.next(); 
    alert("TRUE"); 
    } else { 
    alert("FALSE"); 
    } 
}); 

ループ内のは、テスト/デバッグには恐ろしい方法です。横断要素はlength

$(".container").each(function() { 
    var $ul = $(this).next('ul'); 
    if ($ul.length) { 
    //do something with $ul 
    alert("TRUE"); 
    } else { 
    alert("FALSE"); 
    } 
}); 
+0

OMGを使用して存在するかどうかをチェックするconsole.log()代わり

FIDDLE DEMO

代替アプローチを使用します。それでおしまい! 啓発と、console.logに関するヒントをありがとう! –

関連する問題