Maison > interface Web > js tutoriel > Jquery exploite les colonnes des tableaux et trie les tableaux

Jquery exploite les colonnes des tableaux et trie les tableaux

php中世界最好的语言
Libérer: 2018-04-25 10:18:00
original
1745 Les gens l'ont consulté

Cette fois, je vais vous présenter Jquery pour faire fonctionner les colonnes d'un tableau et trier les tableaux. Quelles sont les précautions pour que Jquery utilise les colonnes d'un tableau et trier les tableaux. Ce qui suit est un cas pratique, jetons un coup d'œil.

L'idée principale de cette implémentation est la suivante : obtenir le numéro de colonne de la cellule d'en-tête sur laquelle la souris a cliqué, parcourir les lignes de données, obtenir le html dans chaque et obtenir le html sous chaque Correspond au contenu de la balise du numéro de colonne obtenu et obtient la valeur de l'attribut de type de la balise Il existe de nombreux plug-ins Jquery pour trier les tables sur le front-end. Par exemple, Jquery Data Tables est assez puissant dans le traitement des tables, il peut trier, rechercher, paginer et autres opérations sur les tables. n’ont pas étudié attentivement son principe de mise en œuvre.

Afin de mieux comprendre le principe du tri des tables sur le front end, et d'approfondir mon apprentissage de Jquery, j'ai décidé d'utiliser Jquery pour implémenter une petite fonction de tri des tables.

L'idée principale de cette implémentation est la suivante : obtenir le numéro de colonne de la cellule d'en-tête sur laquelle la souris a cliqué, parcourir les lignes de données, obtenir le code HTML dans chaque et obtenir les informations correspondantes sous chaque . tr> Le contenu de la balise du numéro de colonne est obtenu et la valeur de l'attribut de type de la balise et la valeur de l'attribut de type sont obtenus et fusionnés en une chaîne et l'ajoutent au tableau, puis vident tout le code HTML du tableau , utilisent différentes méthodes pour comparer le contenu de en fonction des différentes valeurs d'attribut de type, et comparez le tableau en fonction des résultats de la comparaison, puis réaffectez les éléments du tableau triés au vide. Si la colonne a déjà été triée, inversez directement le tableau. Trois types de règles de tri sont fournis : numérique, chaîne et adresse IP. La règle de tri des types de chaînes utilise la méthode localeCompare de JavaScript, qui prend en charge le tri des chaînes de caractères chinois. Malheureusement, cette méthode n'est pas compatible avec Google Chrome. Par conséquent, les résultats du tri des chaînes de caractères chinois sur Google Chrome seront incorrects.

Liste de codes HTML
 :

Résultat d'exécution :
View Code 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<title> 表格排序 </title> 
<meta name="Generator" content="EditPlus"> 
<meta name="Author" content="tschengbin"> 
<meta name="Keywords" content="jquery tableSort"> 
<meta name="Description" content=""> 
<script type="text/javascript" src="jquery-1.8.3.min.js"></script> 
<script type="text/javascript" src="tableSort.js"></script> 
<style type="text/css"> 
p{ 
width: 1024px; 
margin: 0 auto;/*p相对屏幕左右居中*/ 
} 
table{ 
border: solid 1px #666; 
border-collapse: collapse; 
width: 100%; 
cursor: default; 
} 
tr{ 
border: solid 1px #666; 
height: 30px; 
} 
table thead tr{ 
background-color: #ccc; 
} 
td{ 
border: solid 1px #666; 
} 
th{ 
border: solid 1px #666; 
text-align: center; 
cursor: pointer; 
} 
.sequence{ 
text-align: center; 
} 
.hover{ 
background-color: #3399FF; 
} 
</style> 
</head> 
<body> 
<p> 
<table id="tableSort"> 
<thead> 
<tr> 
<th type="number">序号</th> 
<th type="string">书名</th> 
<th type="number">价格(元)</th> 
<th type="string">出版时间</th> 
<th type="number">印刷量(册)</th> 
<th type="ip">IP</th> 
</tr> 
</thead> 
<tbody> 
<tr class="hover"> 
<td class="sequence">1</td> 
<td>狼图腾</td> 
<td>29.80</td> 
<td>2009-10</td> 
<td>50000</td> 
<td>192.168.1.125</td> 
</tr> 
<tr> 
<td class="sequence">2</td> 
<td>孝心不能等待</td> 
<td>29.80</td> 
<td>2009-09</td> 
<td>800</td> 
<td>192.68.1.125</td> 
</tr> 
<tr> 
<td class="sequence">3</td> 
<td>藏地密码2</td> 
<td>28.00</td> 
<td>2008-10</td> 
<td></td> 
<td>192.102.0.12</td> 
</tr> 
<tr> 
<td class="sequence">4</td> 
<td>藏地密码1</td> 
<td>24.80</td> 
<td>2008-10</td> 
<td></td> 
<td>215.34.126.10</td> 
</tr> 
<tr> 
<td class="sequence">5</td> 
<td>设计模式之禅</td> 
<td>69.00</td> 
<td>2011-12</td> 
<td></td> 
<td>192.168.1.5</td> 
</tr> 
<tr> 
<td class="sequence">6</td> 
<td>轻量级 Java EE 企业应用实战</td> 
<td>99.00</td> 
<td>2012-04</td> 
<td>5000</td> 
<td>192.358.1.125</td> 
</tr> 
<tr> 
<td class="sequence">7</td> 
<td>Java 开发实战经典</td> 
<td>79.80</td> 
<td>2012-01</td> 
<td>2000</td> 
<td>192.168.1.25</td> 
</tr> 
<tr> 
<td class="sequence" onclick="sortArray()">8</td> 
<td>Java Web 开发实战经典</td> 
<td>69.80</td> 
<td>2011-11</td> 
<td>2500</td> 
<td>215.168.54.125</td> 
</tr> 
</tbody> 
</table> 
</p> 
</body> 
</html> 

tableSort.js代码清单:
复制代码 代码如下:

View Code 
$(document).ready(function(){ 
var tableObject = $(&#39;#tableSort&#39;);//获取id为tableSort的table对象 
var tbHead = tableObject.children(&#39;thead&#39;);//获取table对象下的thead 
var tbHeadTh = tbHead.find(&#39;tr th&#39;);//获取thead下的tr下的th 
var tbBody = tableObject.children(&#39;tbody&#39;);//获取table对象下的tbody 
var tbBodyTr = tbBody.find(&#39;tr&#39;);//获取tbody下的tr 
var sortIndex = -1; 
tbHeadTh.each(function() {//遍历thead的tr下的th 
var thisIndex = tbHeadTh.index($(this));//获取th所在的列号 
$(this).mouseover(function(){ 
tbBodyTr.each(function(){//编列tbody下的tr 
var tds = $(this).find("td");//获取列号为参数index的td对象集合 
$(tds[thisIndex]).addClass("hover"); 
}); 
}).mouseout(function(){ 
tbBodyTr.each(function(){ 
var tds = $(this).find("td"); 
$(tds[thisIndex]).removeClass("hover"); 
}); 
}); 
$(this).click(function() { 
var dataType = $(this).attr("type"); 
checkColumnValue(thisIndex, dataType); 
}); 
}); 
$("tbody tr").removeClass();//先移除tbody下tr的所有css类 
$("tbody tr").mouseover(function(){ 
$(this).addClass("hover"); 
}).mouseout(function(){ 
$(this).removeClass("hover"); 
}); 
//对表格排序 
function checkColumnValue(index, type) { 
var trsValue = new Array(); 
tbBodyTr.each(function() { 
var tds = $(this).find(&#39;td&#39;); 
trsValue.push(type + ".separator" + $(tds[index]).html() + ".separator" + $(this).html()); 
$(this).html(""); 
}); 
var len = trsValue.length; 
if(index == sortIndex){ 
trsValue.reverse(); 
} else { 
for(var i = 0; i < len; i++){ 
type = trsValue[i].split(".separator")[0]; 
for(var j = i + 1; j < len; j++){ 
value1 = trsValue[i].split(".separator")[1]; 
value2 = trsValue[j].split(".separator")[1]; 
if(type == "number"){ 
value1 = value1 == "" ? 0 : value1; 
value2 = value2 == "" ? 0 : value2; 
if(parseFloat(value1) > parseFloat(value2)){ 
var temp = trsValue[j]; 
trsValue[j] = trsValue[i]; 
trsValue[i] = temp; 
} 
} else if(type == "ip"){ 
if(ip2int(value1) > ip2int(value2)){ 
var temp = trsValue[j]; 
trsValue[j] = trsValue[i]; 
trsValue[i] = temp; 
} 
} else { 
if (value1.localeCompare(value2) > 0) {//该方法不兼容谷歌浏览器 
var temp = trsValue[j]; 
trsValue[j] = trsValue[i]; 
trsValue[i] = temp; 
} 
} 
} 
} 
} 
for(var i = 0; i < len; i++){ 
$("tbody tr:eq(" + i + ")").html(trsValue[i].split(".separator")[2]); 
} 
sortIndex = index; 
} 
//IP转成整型 
function ip2int(ip){ 
var num = 0; 
ip = ip.split("."); 
num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]); 
return num; 
} 
})
Copier après la connexion


Jquery exploite les colonnes des tableaux et trie les tableaux
Je crois que vous maîtrisez la méthode après avoir lu le Dans le cas de cet article, pour un contenu plus passionnant, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée du fonctionnement dynamique JS+JQuery des méthodes de ligne de tableau


Explication détaillée de JSON. parse() et JSON La différence et l'utilisation de .stringify()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal