在 web 开发中,经常会有后台返回 html 字符串的情况,需要在 js 里将其 转为 juery 对象或者 DOM 并做一些处理,下面这是我在实际中遇到的一点问题,记录一下。
问题如下:
后台获取的字符串是一大段 html , 然后 转为 juery 对象,从中 取出一部分,本来取出来的也是 juery 对象,大致如下 (转为jquery对象,有的浏览器 会格式化 加换行 \r\n)
var str = “<TD>合计</TD>” +
“<TD></TD>” +
“<TD></TD>” +
“<TD>5</TD>” +
“<TD>8</TD>” +
“<TD>4</TD>” +
“<TD>0</TD>” +
“<TD>0</TD>” +
“<TD>17</TD>” +
“<TD>8</TD>” +
“<TD>13</TD>” +
“<TD>9</TD>” +
“<TD>5</TD>” +
“<TD>9</TD>” +
“<TD>0</TD>” +
“<TD>44</TD>” +
“<TD>5</TD>”;
前台 需要 合并单元格 ,因此要把前三个 <td> 去掉, 原本是想直接 截取字符串,谁知道 不同浏览器 ,在转为 juery 对象时,有的会自己格式化加上换行 \r\n ,有的不会,因此不同浏览器 字符串长度也不同,截取的不一样,后来就通过判断浏览器来解决。
后来我想了想,这样兼容性很不好,后来我想了想,可以直接通过 操作 jquery 对象删除 td 的,看了看 jquery 手册 ,找到如下方法:
1、var dd = $(“<tr>”+str+”</tr>”); //重点就在这里
2、 var divHtml = dd.find(‘td:eq(0),td:eq(1),td:eq(2)’).remove(); //找到前三个 td 去掉
alert(dd.html());
第一步,外层一定要加上 <tr>,不然转为 jquery 对象是 只会转第一个 <td>,后面的都没有了,而且我试了,外面 加<div> 也不行,外面 加<table>可以,不过它会自动在table下面加上 一层 tbody ,再加一层 tr
后来总结下,可以转为 jquery 对象时,外层必须加上一层,而且要符合 html 代码的规则,就好比 td 外面要 加 tr
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111325.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...