使用javascript或jquery在dom中插入元素
我使用此脚本将三个不同的使用javascript或jquery在dom中插入元素,javascript,jquery,dom,Javascript,Jquery,Dom,我使用此脚本将三个不同的span插入到第一、第二和第三个lis $("ul li:eq(0)").prepend("<span>1</span>"); $("ul li:eq(1)").prepend("<span>2</span>"); $("ul li:eq(2)").prepend("<span>3</span>"); $(“ul-li:eq(0)”)。前置(“1”); $(“ul-li:eq(1)”)。前置(“2”
span
插入到第一、第二和第三个li
s
$("ul li:eq(0)").prepend("<span>1</span>");
$("ul li:eq(1)").prepend("<span>2</span>");
$("ul li:eq(2)").prepend("<span>3</span>");
$(“ul-li:eq(0)”)。前置(“1”);
$(“ul-li:eq(1)”)。前置(“2”);
$(“ul li:eq(2)”)。前置(“3”);
是否有方法重构此代码以消除冗余?如果要对所有存在的li标记执行此操作:
$("ul li").each(function(i) {
$(this).prepend("<span>" + (i + 1) + "</span>");
});
$(“ul li”)。每个(功能(i){
$(this.prepend(“+(i+1)+”);
});
如果有三个以上的li标记,并且您只希望对前三个li标记执行此操作:
$("ul li:lt(3)").each(function(i) {
$(this).prepend("<span>" + (i + 1) + "</span>");
});
$(“ul-li:lt(3)”)。每个(功能(i){
$(this.prepend(“+(i+1)+”);
});
在这里工作:或者您可以这样做
$("ul li").prepend( function(index, html){
return ("<span>" + (index+1) + "</span>");
});
$(“ul li”).prepend(函数(索引,html){
返回(“+(索引+1)+”);
});
事实上,第二种情况与第一种情况相同,只是将选择器更改为$(“ul li:lt(3)”)
。感谢@jfriend,我尝试使用for in-loop进行同样的操作,但最终总是得到索引0,当我尝试使用I+1时,它只会变成01……似乎CSS选择器还有更多需要学习的地方。谢谢你的提示。@paul-你明白为什么需要这些数字吗?在将数字转换为字符串之前,您必须将它们相加,因为字符串(1+2)与字符串(1)+字符串(2)不同。@jfriend是的,我理解…只是我将两个字符串连接起来…但我也使用了(i+1)…可能是我做了一些错误的事情很酷的想法,但这不会在内容周围添加标记,会吗?它会在数字周围加上span,并在li内容前加上span(在第一个版本中,我省略了span tag-现在添加)+1@Michal,这似乎很有效,很有技巧,而不是循环,但我认为你不需要传递html…它传递元素的当前html(以防万一你想用它做些什么)。是的,测试和工作。