2017-05-27 163 views
0

我想用ul(无序列表)替换所有ol(有序列表)标签。它可以工作,但是当它实际上进行交换时,则会写入一个新事物,并假设您想要添加到列表中,但事实并非如此。因此,我认为代码有问题。用jquery替换html标签

$(document).ready(function() { 
    $('ol').replaceWith("<ul>" + $('ol').html() + "</ul>"); 
}); 

本质上,它的工作,但这一行不让我添加新的列表对象。

+3

你如何添加新列表对象,你能否请求显示*全部*“* [mcve] *”代码来重现你的问题? –

+0

你想用'ul'替代**每个**'ol'标签,还是仅仅指定一个? – natanelg97

回答

0

$.each($('ol'), function(ind) { 
 
    $(this).replaceWith("<ul>" + $(this).html() + "</ul>"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ol> 
 
    <li>1</li> 
 
    <li>2</li> 
 
</ol> 
 

 
<ol> 
 
    <li>First</li> 
 
    <li>Second</li> 
 
</ol>

1

这很容易,你甚至不必使用jQuery。

var ol = document.querySelector('ol'); 
ol.outerHTML = ol.outerHTML.replace(/ol/, 'ul'); 

如果你想与ul更换ol标签,你需要使用querySelectorAll()和运行一个循环。例如:

var ol = document.querySelectorAll('ol'); 
for(var i = 0; i < ol.length; i++) { 
    ol[i].outerHTML = ol[i].outerHTML.replace(/ol/, 'ul'); 
} 

Fiddle 1Fiddle 2

+0

你需要'querySelectorAll'来取代所有这些 – quirimmo

+0

@quirimmo真的,但是这个操作并没有提到他们所有的东西。无论如何,我会更新它 – natanelg97

0

替换操作,你正在做的这是已经在DOM创建的元素。如果将新元素添加为无序列表,那么它将以无序列表形式出现。因此,每次添加新元素时,都必须调用替换方法来替换为已排序列表