Jquery 表格合并的問題分享
更新時間:2011年09月17日 19:46:11 作者:
有朋友問GridView控件對于跨行合并的問題,這可以用控件嵌套來完成,當然,我更喜歡在前臺來用JS來控制網(wǎng)頁元素的樣式,而后臺僅僅是根據(jù)客戶的請求,來返回數(shù)據(jù)。
這里我使用Jquery庫,這個就不用過多介紹了,有幾個知識點:
- 選擇器tr:eq(index),表示選擇指定index索引的tr元素,index索引從0開始
- tempRow.parent(),表示返回tempRow對象的父節(jié)點對象
- $("<td/>").prependTo(),表示將一個td元素添加到指定元素的內(nèi)容頭部
實例代碼
index.html
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery.js" language="javascript" ></script>
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}
#gridview, #gridview td { border:1px #ccc solid; border-collapse:collapse; }
-->
</style>
</head>
<body>
<table id="gridview" width="386" border="0" cellspacing="0" cellpadding="6">
<tr>
<td width="59" align="center"><strong>課別</strong></td>
<td width="76" align="center"><strong>班別</strong></td>
<td width="73" align="center"><strong>班次</strong></td>
<td width="130" align="center"><strong>出勤時間</strong></td>
</tr>
<tr>
<td>陳偉勛</td>
<td>一班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>一班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>兩班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>兩班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>兩班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>三班制</td>
<td>早班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>三班制</td>
<td>中班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>三班制</td>
<td>晚班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>一班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>兩班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>兩班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>兩班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>三班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>三班制</td>
<td>中班</td>
<td>2011-09-09</td>
</tr>
</table>
<script>
var grid = $("#gridview");
var rowCount = grid.find("tr").length - 1;
var flagRow = grid.find("tr:eq("+rowCount+")").find("td:eq(0)").html();
var sp = 0;
for(var i = rowCount; i >=0; i--) {
var tempRow = grid.find("tr:eq("+i+")");
if(flagRow == tempRow.find("td:eq(0)").html()) {
tempRow.find("td:eq(0)").remove();
}
else {
$("<td/>").attr("rowspan", rowCount-i-sp).html(flagRow).prependTo(tempRow.parent().find("tr:eq("+(i+1)+")"));
flagRow = tempRow.find("td:eq(0)").html();
sp = rowCount-i;
if(i != 0) {
tempRow.find("td:eq(0)").remove();
}
}
}
</script>
</body>
</html>
- 選擇器tr:eq(index),表示選擇指定index索引的tr元素,index索引從0開始
- tempRow.parent(),表示返回tempRow對象的父節(jié)點對象
- $("<td/>").prependTo(),表示將一個td元素添加到指定元素的內(nèi)容頭部
實例代碼
index.html
復制代碼 代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery.js" language="javascript" ></script>
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}
#gridview, #gridview td { border:1px #ccc solid; border-collapse:collapse; }
-->
</style>
</head>
<body>
<table id="gridview" width="386" border="0" cellspacing="0" cellpadding="6">
<tr>
<td width="59" align="center"><strong>課別</strong></td>
<td width="76" align="center"><strong>班別</strong></td>
<td width="73" align="center"><strong>班次</strong></td>
<td width="130" align="center"><strong>出勤時間</strong></td>
</tr>
<tr>
<td>陳偉勛</td>
<td>一班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>一班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>兩班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>兩班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>兩班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>三班制</td>
<td>早班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>三班制</td>
<td>中班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>陳偉勛</td>
<td>三班制</td>
<td>晚班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>一班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>兩班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>兩班制</td>
<td>白班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>兩班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>三班制</td>
<td>夜班</td>
<td>2011-09-09</td>
</tr>
<tr>
<td>張文軍</td>
<td>三班制</td>
<td>中班</td>
<td>2011-09-09</td>
</tr>
</table>
<script>
var grid = $("#gridview");
var rowCount = grid.find("tr").length - 1;
var flagRow = grid.find("tr:eq("+rowCount+")").find("td:eq(0)").html();
var sp = 0;
for(var i = rowCount; i >=0; i--) {
var tempRow = grid.find("tr:eq("+i+")");
if(flagRow == tempRow.find("td:eq(0)").html()) {
tempRow.find("td:eq(0)").remove();
}
else {
$("<td/>").attr("rowspan", rowCount-i-sp).html(flagRow).prependTo(tempRow.parent().find("tr:eq("+(i+1)+")"));
flagRow = tempRow.find("td:eq(0)").html();
sp = rowCount-i;
if(i != 0) {
tempRow.find("td:eq(0)").remove();
}
}
}
</script>
</body>
</html>
注釋掉Jquery代碼的效果圖
運行Jquery代碼的效果圖
小結(jié)
代碼寫得很粗糙,只是簡單做個筆記,最近在忙著整理編寫一些Jquery插件和discuz插件,Python和PyQt的相關文章都未來得及整理發(fā)布,唉,時間不夠用啊,只能慢慢來了。Jquery是相當不錯的說,內(nèi)置Sizzle選擇器后,那速度更是飛一般,貌似現(xiàn)在到1.6版本了,希望越做越好吧!
相關文章
基于jQuery實現(xiàn)交互體驗社會化分享代碼附源碼下載
基于jQuery實現(xiàn)交互體驗社會化分享代碼附源碼下載。這是一款鼠標點擊分享按鈕向右滑出騰訊微博,新浪微博,QQ空間,豆瓣,微信,二維碼分享等分享平臺,本段代碼比較實用,需要的朋友參考下吧2016-01-01jquery+ajax實現(xiàn)省市區(qū)三級聯(lián)動(封裝和不封裝兩種方式)
這篇文章主要為大家詳細介紹了jquery+ajax實現(xiàn)省市區(qū)三級聯(lián)動的相關代碼,包括封裝和不封裝兩種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05Jquery Ajax 學習實例2 向頁面發(fā)出請求 返回JSon格式數(shù)據(jù)
處理業(yè)務數(shù)據(jù),產(chǎn)生JSon數(shù)據(jù),供JqueryRequest.aspx調(diào)用2010-03-03jQuery soColorPacker 網(wǎng)頁拾色器
這篇文章主要介紹了jQuery soColorPacker 網(wǎng)頁拾色器 的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06