针对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? }); }); 

5 Solutions collect form web for “针对jQuery中的每个循环嵌套$(this)”

 $('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); }); 
  • 最好的方法来扩展一个jQuery插件
  • jQuery的Ajax等待,直到所有的图像加载
  • 如何使用jquery从string数组中生成UL Li列表?
  • DataTables固定标题与宽表中的列未alignment
  • 用jQueryselect最后5个元素
  • 如何获得跨源资源共享(CORS)的后期请求工作
  • react.js能够和jQuery / UI组件一起玩吗?
  • 如何检查jQuery插件和函数的存在?
  • 在IE中调用jQuery ajax调用“无传输”错误
  • jQuery - 当不可见时获取元素的宽度(显示:无)
  • AJAX - 多个数据