Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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在随机位置追加内容?_Javascript_Jquery_Random_Appendto - Fatal编程技术网

Javascript 使用jQuery在随机位置追加内容?

Javascript 使用jQuery在随机位置追加内容?,javascript,jquery,random,appendto,Javascript,Jquery,Random,Appendto,我需要在一个页面中显示一个项目列表,这个页面用AJAX更新。每次将新项目推送到客户端时,我希望它出现在我的ul列表中的随机位置 下面是我所说的列表类型的一个示例: HTML 你知道如何使用jquery在列表中的任意位置添加新项吗? 我知道我可以做一些类似于$(li_元素)的事情但这会将其附加到列表的底部 另一个可能存在的问题是,每个li元素都向左浮动。因此,当在中间添加一个新元素时,该元素之后的每一个元素将向右推一个点。 我可以使用几个向左浮动的ul列表,并且这些列表相互堆叠,因此当呈现一个新

我需要在一个页面中显示一个项目列表,这个页面用AJAX更新。每次将新项目推送到客户端时,我希望它出现在我的
ul列表中的随机位置

下面是我所说的列表类型的一个示例:

HTML 你知道如何使用jquery在列表中的任意位置添加新项吗? 我知道我可以做一些类似于
$(li_元素)的事情但这会将其附加到列表的底部

另一个可能存在的问题是,每个
li元素
都向左浮动。因此,当在中间添加一个新元素时,该元素之后的每一个元素将向右推一个点。


我可以使用几个向左浮动的ul列表,并且这些列表相互堆叠,因此当呈现一个新项目时,列表只需向下推,但如果我随机执行此操作,一些ul列表可能会比其他列表长,这看起来也很奇怪。

尝试以下操作:

var randomNum = Math.floor(Math.random()*9);
$(".itemlist li").eq(randomNum).append("HI");
只需在javascript中创建一个随机数。然后在列表中选择该随机元素并附加新内容。除非我不理解这个问题

var $lis = $(".itemlist li");
$lis.eq(Math.floor(Math.random()*$lis.length)).after(
                                            /* your new content here */ );
该方法附加了一个同级,因此从
  • 项列表中选择一个随机元素,并在其上使用
    .after()
    。或
    .before()


    另外,关于一个新添加的项目将其他项目推向右侧,这是一个问题吗?如果列表有水平布局,这不是很正常吗?

    对于接受的答案,新元素永远不会作为第一个插入。可以插入的位置是元素数加一。元素之间+开始+结束

    代码不是很好,但是可以修复它

    var$lis=$(“.itemlist li”);
    var pos=Math.floor(Math.random()*($lis.length+1))-1;
    如果(位置!=-1){
    $lis.eq(pos.)在(“
  • 新建”
  • ”)之后; }否则{ $lis.eq(0)。在(“
  • 新的第一个”
  • ”)之前; }
    这很正常,但这就是我不确定是否使用水平布局的原因。这是最简单的方法。谢谢
    var randomNum = Math.floor(Math.random()*9);
    $(".itemlist li").eq(randomNum).append("HI");
    
    var $lis = $(".itemlist li");
    $lis.eq(Math.floor(Math.random()*$lis.length)).after(
                                                /* your new content here */ );
    
    var $lis = $(".itemlist li");
    var pos = Math.floor(Math.random() * ($lis.length + 1)) - 1;
    if(pos != -1){
      $lis.eq(pos).after("<li>new</li>");
    } else{
      $lis.eq(0).before("<li>new first</li>");
    }