用jquery操作html,向
的第一li后面追加
    的问题

TraineeFang 2014-01-17 11:18:12
<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>
...全文
1772 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
allali 2014-01-20
  • 打赏
  • 举报
回复
引用 14 楼 u013177533 的回复:
(<li.*?id="my_sp"[\d\D]*?<\/li>) 什么意思
[\d\D]是所有字符包括换行 *代表0个或1一个以上[\d\D] $1是括号括起来的部分 可以多个括号 $1,$2,$3.. 你上w3c看一下正则表达式就知道了
zhjdg 2014-01-18
  • 打赏
  • 举报
回复
/(<li.*?id="my_sp"[\d\D]*?<\/li>)/ 是个简单的,再也没有比这个更简单的正则表达式。 *? 注意下是非贪婪就可以了。
is12 2014-01-18
  • 打赏
  • 举报
回复
(<li.*?id="my_sp"[\d\D]*?<\/li>) 什么意思
zhjdg 2014-01-18
  • 打赏
  • 举报
回复
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>
TraineeFang 2014-01-18
  • 打赏
  • 举报
回复
引用 7 楼 MengYouXuanLv 的回复:

function OK() {
$(".subitem").html($(".subitem").html().replace(/(<li.*?id="my_sp"[\s\S]*?<\/li>)/g,"$1</ul><ul>"));
 }
嗯,这个我试了,可以的,不过正则表达式我不太懂,你能帮我解释下 replace(/(<li.*?id="my_sp"[\s\S]*?<\/li>)/g,"$1</ul><ul>")); 这个里面正则表达式的意思么, 前面的 "/" 是所有的正则表达式都要用 /开头吗?还有后面的 $1,应该是jquery里面的,是什么意思呢? 谢谢。
TraineeFang 2014-01-18
  • 打赏
  • 举报
回复
引用 10 楼 danica7773 的回复:
sorry,我错了,没看下面的代码,没有格式化的代码很多时候不看的,看的眼睛难受。 明白你的意思了,不过,只能说,你不是一个有正常思维的人,这句话怎么像骂人呢! 我的意思是,如果对于html,dom的东西比较了解的话,是不会像你那样弄的。 而且按一般人的想法,肯定是再新建一个ul,把其中一部分li搬到新的ul里面去,不会像你这样的搞法 引用7楼的,这样可以 [quote=引用 7 楼 MengYouXuanLv 的回复:]

function OK() {
$(".subitem").html($(".subitem").html().replace(/(<li.*?id="my_sp"[\s\S]*?<\/li>)/g,"$1</ul><ul>"));
 }
[/quote] 嗯,这个我试了,可以的,不过正则表达式我不太懂,你能帮我解释下 replace(/(<li.*?id="my_sp"[\s\S]*?<\/li>)/g,"$1</ul><ul>")); 这个里面正则表达式的意思么, 前面的 "/" 是所有的正则表达式都要用 /开头吗?还有后面的 $1,应该是jquery里面的,是什么意思呢? 谢谢。
u011175581 2014-01-17
  • 打赏
  • 举报
回复
楼主也是笔误吧 你们就别队列吐槽了
嘻哈大咖秀 2014-01-17
  • 打赏
  • 举报
回复
$(".subitem ul:last").after("</ul><ul>");
夜雨_Jason 2014-01-17
  • 打赏
  • 举报
回复
$("#my_sp").after("</ul><ul>");
打字员 2014-01-17
  • 打赏
  • 举报
回复
$("#my_sp").after("</ul><ul>"); 看你清楚,你加的是什么?你觉得那样加进去后,html变成什么样了?
打字员 2014-01-17
  • 打赏
  • 举报
回复
sorry,我错了,没看下面的代码,没有格式化的代码很多时候不看的,看的眼睛难受。 明白你的意思了,不过,只能说,你不是一个有正常思维的人,这句话怎么像骂人呢! 我的意思是,如果对于html,dom的东西比较了解的话,是不会像你那样弄的。 而且按一般人的想法,肯定是再新建一个ul,把其中一部分li搬到新的ul里面去,不会像你这样的搞法 引用7楼的,这样可以
引用 7 楼 MengYouXuanLv 的回复:

function OK() {
$(".subitem").html($(".subitem").html().replace(/(<li.*?id="my_sp"[\s\S]*?<\/li>)/g,"$1</ul><ul>"));
 }
scscms太阳光 2014-01-17
  • 打赏
  • 举报
回复
哥哪能这么搞?你本是字符串操作,却要起到节点效果。
<ul>
    <li><a>烷烃及衍生物</a></li>
    <li><a>烷烃及衍生物</a></li>
    <li><a>烷烃及衍生物</a></li>
    <li id="my_sp"><a>烷烃及衍生物</a></li>
    <li><a>烷烃及衍生物</a></li>
    <li><a>烷烃及衍生物</a></li>
    <li><a>烷烃及衍生物</a></li>
</ul>
<button type="button">我擦</button>
<script type="text/javascript">
$(function(){
    $("button").click(function(){
        $("ul").after($("<ul/>").append($("#my_sp").nextAll()));
    })
})
</script>
TraineeFang 2014-01-17
  • 打赏
  • 举报
回复
引用 1 楼 danica7773 的回复:
$("#my_sp").after("</ul><ul>"); 看你清楚,你加的是什么?你觉得那样加进去后,html变成什么样了?
这个:之前是这样的结构: <ul> <li><a>烷烃及衍生物</a></li> <li><a>烷烃及衍生物</a></li> <li><a>烷烃及衍生物</a></li> <li id="my_sp"><a>烷烃及衍生物</a></li> <li><a>烷烃及衍生物</a></li> <li><a>烷烃及衍生物</a></li> <li><a>烷烃及衍生物</a></li> </ul> 我想用这个方法: $("#my_sp").after("</ul><ul>");往中间加上</ul><ul>,你们看结构就知道,我是要</ul>这个结束标记,和上面的配对;让<ul>这个开始标记,和下面的配对。 将上面的ul块切成两个 ul块,成为下面的结构: <ul> <li><a>烷烃及衍生物</a></li> <li><a>烷烃及衍生物</a></li> <li><a>烷烃及衍生物</a></li> <li id="my_sp"><a>烷烃及衍生物</a></li> </ul> <ul> <li><a>烷烃及衍生物</a></li> <li><a>烷烃及衍生物</a></li> <li><a>烷烃及衍生物</a></li> </ul> ,但是浏览器自动配对,将我的</ul><ul>, 转化成了<ul></ul>,我想问,这个怎么解决?
allali 2014-01-17
  • 打赏
  • 举报
回复

function OK() {
$(".subitem").html($(".subitem").html().replace(/(<li.*?id="my_sp"[\s\S]*?<\/li>)/g,"$1</ul><ul>"));
 }
zhjdg 2014-01-17
  • 打赏
  • 举报
回复
表达没错,不过超一般人逻辑的方法。 这个要自己写,一般普通的,安共用规则办事的库是没有的这个方法的。
丨落叶 2014-01-17
  • 打赏
  • 举报
回复
我觉得楼主表达没有错啊?
上周新接手一个网站建设的活儿,其中有需要要jquery代码实现三级菜单的需求,其实说难也不难,下面小编把代码分享给大家,供大家参考。 先给大家展示下效果图,如果大家感觉还不错的话,请参考实现代码。 HTML代码: <body>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧