【问题标题】:Jquery - Adding html before each new line in an arrayJquery - 在数组中的每个新行之前添加 html
【发布时间】:2012-04-24 00:53:34
【问题描述】:

我一直在尝试通过在其内容顶部添加一个有序列表,然后在每个新行之前添加一个 LI 和一个 P 来设置 html CODE 元素的样式,并将它们的结束标记添加到每一行的末尾。

这就是我所拥有的:

     $("#mydiv code").each(function(){
        var oldcontent = $(this).html();
        $(this).html("<span class='olnumbers'></span><ol class='code'>" + oldcontent + "</ol>");
        var lines = oldcontent.split(/[\n\r]/g);
        $.each(lines, function(e){
                $(this).html("<li><p>" + lines + "</p></li>");
        });

 });

这根本行不通。我没有错误,我不知道出了什么问题。 有人知道如何解决这个问题吗?

谢谢!

【问题讨论】:

  • 我应该提到:这可以在内容之外添加跨度和OL,但不添加LI和P。但是,如果我将“alert(this)”放在每个函数中,它就可以完美运行。

标签: jquery html split append newline


【解决方案1】:

你不能在每个函数中使用这个。

http://api.jquery.com/jQuery.each/

jQuery.each(集合,回调(indexInArray, valueOfElement))

collection 要迭代的对象或数组。

callback(indexInArray, valueOfElement) 将要调用的函数 在每个对象上执行。

试试这个:

var html = [];
$.each(lines, function(i, val){
                html.push("<li><p>" + val + "</p></li>");
        });
$(this).html(html.join(''));

【讨论】:

  • 行得通!但是现在我的 OL 和 span 没有被附加 - 我认为这是因为 "$(this).html(html.join(''));"行。
  • 没关系,我修复了它 - 愚蠢的错误,我使用的行是用 var oldcontent 替换所有内容,所以我创建了一个新的 var 并且它可以工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
相关资源
最近更新 更多