Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript或jquery在dom中插入元素_Javascript_Jquery_Dom - Fatal编程技术网

使用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(以防万一你想用它做些什么)。是的,测试和工作。