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

Javascript 检查在.each()中使用jQuery.find()时是否未定义,javascript,jquery,each,Javascript,Jquery,Each,我正在使用下面的脚本运行一个项目菜单并测量左偏移量。我这里的问题是不是每个元素都包含我要查找的“ul”。我试过通过ul检查并打到家长,但从未正确触发。然后我试着测量。长度和长度。我还试着与“未定义”进行比较。我完全被难住了,很可能我在做一些愚蠢的事情,我只是看不到显而易见的事情 $('#nav ul.nav-tier-2 li').each(function(){ var leftQ = $(this).find('ul').offset().left; //Extra co

我正在使用下面的脚本运行一个项目菜单并测量左偏移量。我这里的问题是不是每个元素都包含我要查找的“ul”。我试过通过ul检查并打到家长,但从未正确触发。然后我试着测量。长度和长度。我还试着与“未定义”进行比较。我完全被难住了,很可能我在做一些愚蠢的事情,我只是看不到显而易见的事情

$('#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>

  • 链接文本
      • 最后一环

如果没有HTML结构示例,这只是猜测,但它将省去额外的搜索并避免不存在的后代
UL
s:

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

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

jsIDLE:

var$ul=$(this.find('ul');如果($ul.length===1){/*found*/}
如果($).find('ul').length>0){…
你没有读过问题的描述吗?他说他已经试过测量长度了。你不需要每个人都喜欢用长度来检查,最好是用
$('nav ul nav-tier-2 li')。查找('ul每个人(
如果您有嵌套的ul,正如您的代码所暗示的那样,您需要使外部选择器更具体:
$(“#nav ul.nav-tier-2>li”)
或者您将在顶部搜索中包括孙辈
LI
s。我已经尝试过了,但后来我尝试将目标锁定在它似乎找到的父“LI”上it@TheHamstring:我添加了缺少的括号并为您制作了一个JSFiddle:)在Chrome中运行时,控制台显示
leftQ
88