作者No (you stay there)
看板Ajax
标题Re: [问题] JQuery合并td
时间Thu Sep 22 22:26:18 2011
※ 引述《fr730149 ()》之铭言:
: 假设:我把Table改成
: <table>
: <tr>
: <td>Column_A</td><td>Column_B</td><td>Column_C</td><td>Column_D</td>
: </tr>
: <tr>
: <td>X11</td><td>X21</td><td>X12</td><td>X13</td>
: </tr>
: <tr>
: <td>X11</td><td>X32</td><td>X33</td><td>X11</td>
: </tr>
: <tr>
: <td>X31</td><td>X32</td><td>X33</td><td>X34</td>
: </tr>
: </table>
: X32, X33还是会重复出现
: 目前我还在研究问题点…
提供另一种解法
http://jsbin.com/oveger/edit#source
// 从第一个row逆向走访每一个cell
$($('tr:first td').get().reverse()).each(function(index){
// $start为比对目标,指向每一组的首项cell
var $start = $current = $(this);
var $next;
var need_remove = $([]);
// 逆向所以index要算一下
index = $start.parent().children().length - index - 1;
// 取得同一个column的下一个cell
while(($next=$current.parent().next().children().eq(index)).length){
if($start.html() == $next.html()){
var rs = (parseInt($start.attr('rowspan'), 10) || 1) + 1;
$start.attr('rowspan', rs);
need_remove.push($next);
}
else{
$start = $next;
}
$current = $next;
}
// 每跑完一个column才移除不要的cell
need_remove.each(function(){
this.remove();
});
});
设rowspan和移除多余的cell的部分
或许可以有更好的写法
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.134.26.22
1F:推 fr730149:恕小弟愚昧 走逆向的用意是… 09/22 23:14
2F:→ No:顺着走时,若之的column已有cell被移除,则接下来取eq会有问题 09/22 23:20
3F:→ No: ^前 09/22 23:21
4F:推 mesak:推 =w= 09/22 23:39
5F:推 xxxx9659:推 || 居然可以这样这样用好厉害@@ 10/02 06:12