针对jQuery中的每个循环嵌套$(this)

我试图弄清楚,当迭代通过一些列表项时,如何在嵌套的foreach循环中定位每个“$(this)”等价物。 这是我的问题的一个例子:

$('li').each(function(){ // I believe $(this) would target each li item... $(this).children("li").each(function(){ // ... but how can I target each of these li items? Doesn't $(this) target the original loop? }); }); 
 $('li').each(function(){ var $this = $(this); $this.children("li").each(function(){ $this; // parent li this; // child li }); }); 

不要使用this ! 使用function参数!

 $('li').each(function(i, li){ $(li).children("li").each(function(ii, li2){ $(li)... $(li2)... }); }); 

这更符合本机JavaScript迭代器。

…虽然一个<li>不能是另一个<li>的直接子

看看jQuery函数的基本“原型”(或方法,如果你愿意的话):

 $[jQobject].[func]([callback]); 

callback函数将在jQ对象的上下文中被调用。 显而易见的是上下文。 简而言之,这意味着:

 $('#foo').click(function(){}); /\ /\ || Is the context || ===================== 

不pipe循环是嵌套还是不嵌套,这同样适用于你的情况:

 $('ul').each(function() { //this is ul var that = this;//you'll often see code like this $('li', this).each(function() { //this is li //that is parent ul }); }); 

但是我怎么能瞄准这些李项目? $(this)不是以原始循环为目标吗?

不。

this来自你直接的function。

不, this是指每个孩子<li>项目。 试试看。

大多数(如果不是全部的话)与DOM交互的jQuerycallback会将其设置为您正在使用的DOM元素。

你也可以写:

 $('li').children("li").each(function(){ var $this = $(this); });