我有一个列表,我不想通过javascript中断添加标题:
自:
<ul>
<li>1</li>
<li class="afterthis">2</li>
<li>3</li>
<li>4</li>
</ul>
要:
<ul>
<li>1</li>
<li class="afterthis">2</li>
</ul>
<h1>Title</h1>
<ul>
<li>3</li>
<li>4</li>
</ul>
我觉得这很容易:$(".afterthis").after("</ul><h1>Title</h1><ul>");
但它没有关闭列表,它会移动结束标记,它会插入<h1>Title</h1><ul></ul>
要查看问题,请参阅此jsfiddle http://jsfiddle.net/Fx74b/14/
答案 0 :(得分:4)
Jquery仅使用有效的HTML,而不是字符串部分。
因此,您无法将损坏的html传递给after()
方法。
您需要拆分自己的ul
并在其间添加其他元素。
$(document).ready(function() {
var splitelement = $(".afterthis"); // find the element which will be used for the split
var ul = splitelement.parent(); // find the relative ul
var newul = $('<ul>'); // create the new ul that will follow the existing one
newul.append( splitelement.nextAll() ); // move the rest of the li elements to the new ul
ul.after("<h1>Title</h1>").next().after(newul); // insert the title and then then ul
});
答案 1 :(得分:1)
据我所知.after
需要一个适当的DOM文本或对象的参数
$(</ul><h1>Title</h1><ul>)
从结束标记开始,因此忽略</ul>
。 <ul>
未完成,jquery为<ul>