jquery最后添加了元素

Eir*_*inn 1 jquery

我通过jQuery加载一些HTML元素:

考虑这种情况:

<li>test</li> (1)
<li>test</li> (2)
<li>test</li> (3)
Run Code Online (Sandbox Code Playgroud)

如果我做:

    $("body").find('li:last')
Run Code Online (Sandbox Code Playgroud)

我会得到最后一个li元素,我标记的那个元素(3)以及我是否总是按顺序添加可以正常的项目.但是,如果我在其间添加一个新元素:

<li>test</li> (1)
<li>test</li> (2)
<li>test</li> (4)<-
<li>test</li> (3)
Run Code Online (Sandbox Code Playgroud)

:最后不会这样做,因为我添加的元素不是列表中的最后一个.

我如何得到(4)的引用?

编辑:请,没有eq()解决方案,我需要这是动态的,我不能总是知道在上下文中添加元素的位置.

T.J*_*der 6

没有内置的方法来了解最后添加的元素是什么.你必须自己跟踪它.

至少有几种方法可以做到这一点.

  1. 您可以在代码中保留对它的引用.

  2. 你可以使用data-*属性或类,然后再去寻找它,例如:

    // Get the last
    var last = $("[data-last]");
    
    // When adding
    $("[data-last]").removeAttr("data-last"); // clear from previous
    $(....).append(...).attr("data-last", 1); // set on the new one
    
    Run Code Online (Sandbox Code Playgroud)

    要么

    // Get the last
    var last = $(".last");
    
    // When adding
    $(".last").removeClass("last");       // clear from previous
    $(....).append(...).addClass("last"); // set on the new one
    
    Run Code Online (Sandbox Code Playgroud)
  3. (补充):由于只有一个 "最后"元素,我认为使用一个方法的亚美尼亚方法id是有道理的,尽管不是他做的方式.根本不需要计数器,只需使用last:

    // Get the last
    var list = $("#last");
    
    // When adding a new one
    $("#last").attr("id", "");
    $(...).append(...)[0].id = "last"; // Or .attr("id", "last");
    
    Run Code Online (Sandbox Code Playgroud)

我倾向于喜欢#1#3,但#1和#2有一些真实的用例.


Ced*_*run 5

添加最后一个元素时,可以尝试添加一个类:

.addClass("lastAdd");
Run Code Online (Sandbox Code Playgroud)

然后你会得到参考 $(".lastAdd")