使用jquery删除有序列表中的换行符

时间:2011-11-03 15:50:52

标签: jquery

从网络服务获取数据,该网络服务以下面的格式显示

<ol>\r\n<li>Combine garlic, mustard, chili powder, cayenne pepper, salt and thyme in a small bowl.</li>\r\n</ol>

我一直在试图移除\ r \ n我的头发,但我似乎无法这样做。因为在元素之间而不是在内容中,大多数jquery函数都不起作用。我正在尝试类似的事情:

$("*").each(function () { 
  if ($(this).children().length == 0) { 
    $(this).html($(this).html().replace('<ol>\\r\\n<li>','<ol><li>')); 
  }
});

不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您可以使用jQuery解析它。

var data = $("<ol>\r\n<li>Combine garlic, mustard, chili powder, cayenne pepper, salt and thyme in a small bowl.</li>\r\n</ol>");

然后,您可以使用data作为任何jQuery DOM包装器对象。它代表<ol>

答案 1 :(得分:2)

您可能需要使用正则表达式。

我没有测试过,但应该可以使用

$(this).html().replace( /[\r\n]/gm,'')

它应该删除html中每次出现的\ r \ n。

最终代码应如下所示

$("*").each(function () { 
  if ($(this).children().length == 0) { 
    $(this).html( $(this).html().replace( /[\r\n]/gm,'') ); 
  }
});

<强>更新

要根据您的评论修复脚本,我认为最好的方法是将OL封装在容器中并解析其html。

<div id="container">
  <ol>\r\n<li>Combine garlic, mustard, chili powder, cayenne pepper, salt and thyme in a small bowl.</li>\r\n</ol>
</div>

脚本

var container = $('#container');
container.html( container.html().replace( /[\r\n]/gm,'') ); 

答案 2 :(得分:0)

我编写了一个不整洁的解决方法。基本上获取ol中的所有文本,替换换行符并插入li作为替换。必须删除第一个和最后一个列表项,因为它是空的。不是最优雅的解决方案,但它的工作原理

var data = $("#tab-2 ol").text(); data = data.replace(/\\r\\n/gm, '<li>'); $("#tab-2 ol").html(data); $("#tab-2 ol li:first-child").remove(); $("#tab-2 ol li:last-child").remove();