jquery最后添加了元素

时间:2012-11-14 13:34:11

标签: jquery

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

考虑这种情况:

<li>test</li> (1)
<li>test</li> (2)
<li>test</li> (3)

如果我这样做:

    $("body").find('li:last')

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

<li>test</li> (1)
<li>test</li> (2)
<li>test</li> (4)<-
<li>test</li> (3)

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

我如何获得对(4)的引用?

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

5 个答案:

答案 0 :(得分:6)

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

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

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

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

    // 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
    

    // Get the last
    var last = $(".last");
    
    // When adding
    $(".last").removeClass("last");       // clear from previous
    $(....).append(...).addClass("last"); // set on the new one
    
  3. (已添加) :由于只有一个“last”元素,我认为Armen's approach使用的是id有道理,虽然不是他这样做的方式。根本不需要计数器,只需使用last

    // Get the last
    var list = $("#last");
    
    // When adding a new one
    $("#last").attr("id", "");
    $(...).append(...)[0].id = "last"; // Or .attr("id", "last");
    
  4. 我倾向于选择#1 #3,但#1和#2有一些真实的用例。

答案 1 :(得分:5)

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

.addClass("lastAdd");

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

答案 2 :(得分:2)

只需在“li”元素中添加一些属性(例如id),然后按此属性值进行搜索。

答案 3 :(得分:1)

初始化新变量

var counter = 1;
添加元素增量计数器后

$('<li id=newli' + counter +'>test</li>').appendTo('body');
counter++;

当你可以获得该项目时,请致电:

var Id = $('#newli' + counter);
$(Id).

答案 4 :(得分:0)

如果你真的需要jQuery来调用你按顺序插入的元素,你必须添加自己的函数(你也可以改变它,但我不推荐它......):

var inserted = [];
$.fn.insertBeforeAndRecall = function(){
    inserted.push(this);
    this.insertBefore(arguments);   
}
function getLastInserted() {
    return inserted[inserted.length-1];
}

您可以通过拨打insertBeforeAndRecall而不是insertBefore来使用它。

Demonstration