代码之家  ›  专栏  ›  技术社区  ›  Harsha M V

jquery在元素前预处理

  •  14
  • Harsha M V  · 技术社区  · 14 年前

    我有这样的HTML结构/

    <li id="1"></li>
    <li id="2"></li>
    <li id="3"></li>
    <li id="comment-box"></li>
    

    现在我想提前准备

    <li id="4"></li>
    

    在注释框之前。

    我正在从评论框中提交一个表单,一旦成功,我就要进行预处理。

    4 回复  |  直到 8 年前
        1
  •  32
  •   Dr.Molle    14 年前

    使用 before() :

    $('#comment-box').before('<li id="4"></li>')
    
        2
  •  4
  •   Ryun    13 年前

    这不是更有意义吗?:

    $('ul#comments_container').prepend('<li id="4"></li>');
    

    $('<li id="4"></li>').hide().prependTo('Ul#comments_container').slideDown("slow");
    

    这将允许您将其添加到ul列表的开头,将其放在列表的末尾,只需使用“append”而不是“prepend”或“append to”即可。

        3
  •  0
  •   Dylan Valade Cindrella    12 年前

    将序列ID附加到元素上是不常见的,但可能的情况是在匹配元素长度未知的特定索引处插入。

    如果知道列表中有多少项,那么可以使用nth child或:eq直接访问该项,而无需将标记类名或ID耦合到jquery选择器中。

    $('li:nth-child(3)') 选择第三个 <li> 虽然 $('li:eq(3)') 选择第四个是因为:eq是基于零的。

    在你的情况下,我的偏好是

    $('li:last').prepend('<li>Fourth item</li>');
    

    Here is a fiddle

        4
  •  0
  •   Vitaliy Penkov    8 年前

    如果您严格希望使用.prepend(),以下内容将帮助您:

    // this gives you a list with all matching elements
    var elementsList = $("li");  
    
    // this refers to an element at required index and wraps it into a jQuery object           
    var elementAtIndex = $(elementsList[your index]);   
    
    // and finally apply change
    elementAtIndex.prepend("<li id=\"4\"></li>");
    

    同样,使用.eq(),在您得到主要想法后,它将更加优雅。.eq允许您引用特定索引。

     var elementAtIndex= $("li").eq(your index);  
     elementAtIndex.prepend("<li id=\"4\"></li>");
    

    最后,我们讨论了最后一个简短的变体:

     $("li").eq(index).prepend("<li id=\"4\"></li>");