在.each()中使用时检查jQuery .find()是否未定义

时间:2014-09-26 14:00:17

标签: javascript jquery each

我正在使用以下脚本来运行项目菜单并测量左偏移量。我的问题不是每个元素都包含'ul'我正在寻找。我试过通过ul查看并击中父级,但从未正确触发过。然后我尝试测量.length而不去。我也试过比较'undefined'。我完全难以理解,我正在做一些愚蠢的事情,我只是看不出明显的事情。

$('#nav ul.nav-tier-2 li').each(function(){
        var leftQ = $(this).find('ul').offset().left;
  //Extra code below
}

HMTL的例子

<nav id="nav">
  <ul class="nav-tier-1">
   <li>
     <a>Link Text</a>
     <ul class="nav-tier-2">
       <li>
         <a></a>
         <ul class="nav-tier-3">
           <li><a> Last link</a></li>
         </ul>
      </li>
    </ul>
  </li>

1 个答案:

答案 0 :(得分:0)

如果没有HTML结构的示例,这是猜测,但它会删除额外的搜索并避免不存在的后代UL

注意:第一个选择器更具体(使用>子选择器)以避免包含孙子LI。你可能需要调整这个,因为你有很多层次。

$('#nav ul.nav-tier-2 > li ul').each(function(){
        var leftQ = $(this).offset().left;
  //Extra code below
});

JSFiddle:http://jsfiddle.net/TrueBlueAussie/7xkdeq16/