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