将后台返回字符串数据转为jquery对象,并做一些操作

1、前言

在 web 开发中,经常会有后台返回 html 字符串的情况,需要在 js 里将其 转为 juery 对象或者 DOM 并做一些处理,下面这是我在实际中遇到的一点问题,记录一下。

2、问题如下

后台获取的字符串是一大段 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>";    

 

3、解决方法

前台需要合并单元格 ,因此要把前三个 <td> 去掉, 原本是想直接 截取字符串,谁知道 不同浏览器 ,在转为 juery 对象时,有的会自己格式化加上换行 \r\n ,有的不会,因此不同浏览器 字符串长度也不同,截取的不一样,后来就通过判断浏览器来解决。后来我想了想,这样兼容性很不好,后来我我了想,可以直接通过 操作 jquery 对象删除 td 的,看了看 jquery 手册 ,找到如下方法:

 

var dd = $("<tr>"+str+"</tr>");    //重点就在这里
var divHtml = dd.find('td:eq(0),td:eq(1),td:eq(2)').remove();     //找到前三个 td 去掉
            alert(dd.html());

 

4、总结

第一步,外层一定要加上 <tr>,不然转为 jquery 对象是 只会转第一个 <td>,后面的都没有了,而且我试了,外面 加<div> 也不行,外面 加<table>可以,不过它会自动在table下面加上 一层 tbody,再加一层 tr,后来总结下,可以转为 jquery 对象时,外层必须加上一层,而且要符合 html 代码的规则,就好比 td 外面要 加 tr

 

 




  • 微信
  • 赶快加我聊天吧
  • QQ
  • 相逢即是有缘
  • weinxin
三尾鱼

发表评论 取消回复