Targeting $(this) within nested for each loops in jQuery

后端 未结 5 1630
执念已碎
执念已碎 2020-12-02 12:29

I\'m trying to figure out, when iterating through some list items, how to target each \"$(this)\" equivalent within nested foreach loops. Here is an example of my problem:

相关标签:
5条回答
  • 2020-12-02 12:43

    Nope, this refers to each of the child <li> items. Try it out.

    Most (if not all) DOM-interacting jQuery callbacks set this to to the DOM element that you're working with.

    You could also write:

    $('li').children("li").each(function(){
        var $this = $(this);
    });
    
    0 讨论(0)
  • 2020-12-02 12:46

    Don't use this! Use function parameters!

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

    This is more in keeping with the native JavaScript iterators.

    ...though an <li> can't be the direct child of another <li>

    0 讨论(0)
  • 2020-12-02 12:53
    $('li').each(function(){
        var $this = $(this);
        $this.children("li").each(function(){
            $this; // parent li
            this; // child li
        });
    });
    
    0 讨论(0)
  • 2020-12-02 13:00

    but how can I target each of these li items? Doesn't $(this) target the original loop?

    Nope.

    this comes from the function you're directly in.

    0 讨论(0)
  • 2020-12-02 13:04

    Look at the basic "prototypes" of jQuery functions (or methods, if you will):

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

    The callback is the function that will be invoked in the context of the jQ object. The context being this, obviously. Put simply that means that:

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

    The same applies to your case, regardless of the loops being nested or not:

    $('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
        });
    });
    
    0 讨论(0)
提交回复
热议问题