Javascript .find()与循环、each()和此关键字的关系-.find()应仅为2时返回4
我需要检查具有class.sub菜单的内部是否存在,如果存在,则将类添加到 以上是我的参考答案 我正在尝试循环遍历每个列表并检查。查找我不了解如何使用。在循环或每个函数中查找,以及如何将其与this关键字关联 我也试过了。孩子们,但它表明孩子们不是一个函数 请参见下面的第一个示例 $functione{ var getMenuItems=$.item; 对于变量i=0;iJavascript .find()与循环、each()和此关键字的关系-.find()应仅为2时返回4,javascript,jquery,html,Javascript,Jquery,Html,我需要检查具有class.sub菜单的内部是否存在,如果存在,则将类添加到 以上是我的参考答案 我正在尝试循环遍历每个列表并检查。查找我不了解如何使用。在循环或每个函数中查找,以及如何将其与this关键字关联 我也试过了。孩子们,但它表明孩子们不是一个函数 请参见下面的第一个示例 $functione{ var getMenuItems=$.item; 对于变量i=0;i0{ 找到console.log子菜单 } }; }; 几个问题: 在传递给$的回调中,这是文档DOM对象。另一方面,fin
if ($(this).find("ul.sub-menu").length !== 0)
尽管$this现在返回一个jQuery对象,但它在for循环的每次迭代中都是同一个对象,因此您得到4个输出,在每种情况下,tested.length值实际上是2。实际上,您希望它引用getMenuItems中的元素。为此,请使用传递给getMenuItems.each的回调。在这里,它将引用一个item元素。因此,上述if条件将变得正确:
getMenuItems.each(function () {
if ($(this).find("ul.sub-menu").length !== 0) {
console.log("sub-menu found");
}
});
但我建议不要使用find,而是使用更智能的选择器:
$function{
$.item>ul.sub-menu.eachfunction{
找到console.logsub菜单;
};
};
A.1分段
分C.1
这不是你想象的那样。它记录了4次,因为有4件事情你正在循环。你实际上也不需要在这里做任何循环。只要选择您的目标元素并执行操作,循环就会隐式发生。您的第一次尝试是指$this吗?如果是这样,您可能是指$this.findul.sub-menu.length!==0想知道这是什么。。。。将其记录到控制台…控制台。日志此版本不相关。。。自从jQuery开始以来,每一个都是相同的