我有一个像这样的HTML结构:
<li id="1"></li>
<li id="2"></li>
<li id="3"></li>
<li id="comment-box"></li>
现在我想要添加前缀
<li id="4"></li>
评论框之前。
我正在从评论框提交一个表单,一旦成功,我想要进行前置操作。
使用 before() 方法:
$('#comment-box').before('<li id="4"></li>')
$('ul#comments_container').prepend('<li id="4"></li>');
或者
$('<li id="4"></li>').hide().prependTo('Ul#comments_container').slideDown("slow");
在元素中附加顺序ID是不常见的,但可能的情况是在未知长度的匹配元素中插入到特定索引。
如果您知道列表中有多少项,则可以使用nth-child或:eq直接访问该项,而无需将标记类名或ID耦合到jQuery选择器中。
$('li:nth-child(3)')
选择第三个<li>
,而$('li:eq(3)')
选择第四个,因为:eq是从零开始的。
在您的情况下,我更喜欢以下方式
$('li:last').prepend('<li>Fourth item</li>');
// 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>");