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

  • jQueryvalidation:dynamic更改规则
  • “在AngularJS中思考”如果我有一个jQuery背景?
  • 本地表单编辑演示和jqGrid 4.4.1
  • CORS - 如何“预检”一个httprequest?
  • 如何删除jQuery UI对话框上的closuresbutton?
  • jQuery:我怎样才能显示一个图像popuponclick的缩略图?
  • closures后,我的Bootstrap警报将不会显示
  • Angularjs ng-click:如何获得这个数据?
  • 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); });