用jquery操作html,向<ul><li></li><li></li></ul>的第一li后面追加</ul><ul>的问题
<head runat="server">
<title></title>
<script src="js/jquery-1.6.2.js" type="text/javascript"></script>
<style type="text/css">
.subitem{ margin: 5px 0;width: 500px;float: left;border-right: #ddd 1px dotted; min-height:400px; }
.subitem ul{ width: 490px; margin: 0 0 0 10px; list-style: none; }
.subitem li{ width: 240px; line-height: 14px;overflow: hidden; }
</style>
<script type="text/javascript">
function OK() {
$("#my_sp").after("</ul><ul>");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" onclick="OK()" value="点吧" />
<div class="subitem">
<ul>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
<li id="my_sp">
<a>看我后面是否被</ul><ul>分割开</a>
</li>
//注:我想在这个位置 追加 </ul><ul> ,这样前面的</ul>与上面的配对,后面的<ul>后下面的</ul>配对
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
</ul>
</div>
</div>
</form>
</body>
问题是:浏览器好像自动将</ul><ul>解析配对,弄成了<ul></ul>,这样就反了,达不到效果?
我想之后变成这样:
<ul>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
<li id="my_sp">
<a>看我后面是否被</ul><ul>分割开</a>
</li>
</ul><ul>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
</ul>
[解决办法]
我的意思是,如果对于html,dom的东西比较了解的话,是不会像你那样弄的。
而且按一般人的想法,肯定是再新建一个ul,把其中一部分li搬到新的ul里面去,不会像你这样的搞法

引用:
function OK() {
$(".subitem").html($(".subitem").html().replace(/(<li.*?id="my_sp"[\s\S]*?<\/li>)/g,"$1</ul><ul>"));
}
[解决办法]
innerHTML vs dom操作(W3c)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
#select {
border: 1px solid red;
}
#select li {
background-color: #2aa;
padding: 20px;
}
</style>
</head>
<body>
<div class="subitem" id='cc'>
<ul>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
<li id="my_sp">
<a>看我后面是否被</ul><ul>分割开</a>
</li>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
<li><a>烷烃及衍生物</a></li>
</ul>
</div>
<script>
function youWant(){
//var subitem0 = document.getElementById("cc");
var subitem0 = document.getElementsByClassName("subitem")[0];
var html = subitem0.innerHTML;
var newhtml = html.replace(/(<li.*?id="my_sp"[\d\D]*?<\/li>)/g,"$1</ul><ul>");
subitem0.innerHTML = newhtml;
}
youWant();
</script>
</body>
</html>
[解决办法]
[\d\D]是所有字符包括换行 *代表0个或1一个以上[\d\D] $1是括号括起来的部分 可以多个括号 $1,$2,$3..
你上w3c看一下正则表达式就知道了