ホームページ ウェブフロントエンド jsチュートリアル jquery_jquery に基づいたテーブルの並べ替え

jquery_jquery に基づいたテーブルの並べ替え

May 16, 2016 pm 06:19 PM
テーブルの並べ替え

多くの専門家も、自分で試してみたいという理由で、jquery 用の特別なソート ライブラリを作成しました。
もちろん、実行速度は本当に許容範囲外ですが、徐々に改善していきます。
注: ここにあるのはコードの一部です。デモを確認してください。
ドキュメントが読み込まれた後、クリック イベントを「th」に追加します。
1.
$('th').click(function(){
var date1=(new Date()).getTime()
var dataType=$(this).attr( 'dataType');
クリックされたオブジェクトのカスタム属性 dataType を検索します。 もちろん、これは W3C 規格に準拠していないため、ID またはクラスで定義することもできますが、これが直感的なポイントだと思います。移行モードでも使用できます。
2.
varindex=$('th').index(this) 1;
ドキュメント内でクリックされたオブジェクトの位置を検索します。 1 を追加することは、クリックされたオブジェクトの位置を与えることです。これは、対応する列の td にスタイルを追加することで行われます。
:eq() を使用すると、td の完全なドキュメント位置しか取得できません。 :nth-child() を使用すると、独自の親要素内の各 td を取得できます。
var row=$('tbody tr');
tbody 内のすべての tr を変数 row に保存します。 .
4.
$.each(row, function(i){ arr[i]=row[i] })
すべての行を走査し、それを arr 配列に挿入します。 >5.if($(this).hasClass('select')) {arr.reverse()}
この 'th' がクリックされている場合、選択スタイルが追加されます。元の arr 配列は直接反転されます。
arr.sort(sortStr(index,dataType))
$('.select').removeClass(); :nth-child(' index ')').addClass(' select');
$(this).addClass('select')
}
それ以外の場合は、sort() メソッドを使用して arr をソートしますsort() メソッドは 1 つの関数を受け入れ、この関数は 2 つの関数を受け入れます。比較する必要があるデータとして、ここでは 2 つのパラメータを持つ
sortStr(); として定義します。 >


コードをコピーします


コードは次のとおりです:

function sortStr(index,dataType){ return function( a,b){ var aText=$(a).find(' td:nth-child(' インデックス ')').text(); var bText=$(b).find(' td:nth-child(' インデックス ')').text(); if(dataType!='roomType'){ aText=Parse(aText,dataType)
bText=Parse (bText,dataType)
return aText>;bText?-1:bText>

}
else return aText.localeCompare(bText)
>}



最初の変数は、クリック イベントで取得される変数です。この変数には、ドキュメント内でクリックされた「th」の位置 (数値) が含まれます。
Jquert の Index() メソッドはオブジェクトの位置を取得します。この位置は 0 から始まり、この例では 6 番目があります。

2 番目のパラメーターは、それぞれの属性値を含みます。 「th」。

sortStr() には比較関数が含まれています。この関数は 2 つのパラメーターを持ち、各パラメーターは 'tbody tr' を表します (ここで、a と b は比較する必要がある tr を表します)。これら 2 つのパラメータは、それらを含む関数環境で取得されます。sort() メソッドのパラメータは、配列オブジェクトの要素を取得します。
この匿名関数は、演算配列 Quote を返します。
arr には配列が含まれます。各配列の値には tbody の tr への参照が含まれます。ソート関数は、戻り値に従って元の配列内の要素の位置を直接変更します。 $(a).find('td:nth-child('index')').text();
比較する必要がある行のいずれかの tds に含まれるテキストを取得します。
クリックイベントで取得されたインデックス変数は、




Copy に対応する td の位置を取得するためにここに渡されます。 code


コードは次のとおりです:


if(dataType!='roomType'){
aText=Parse(aText,dataType)
bText =Parse(bText,dataType)


コードをコピー


コードは次のとおりです:

function Parse(data,dataType){
switch(dataType){
case 'num':
return parseFloat(data )||0 case 'date': return Date.parse(data)||0 default : return splitStr(data) } }

数値型が浮動小数点数に直接変換される場合、

return parseFloat(data)||0
Boone の変換オブジェクト文字列が表示される場合、このドキュメントには NaN が含まれるため 0 を返します。変換できないため、0 が返されます。

日付型の場合は、Date.parse を使用して直接数値に変換できます。この変換は、1970 年から変換パラメーター これは秒まで正確な時間変換を試しました。たとえば、1971/01/2 18:12:20、01/2/1970 18:12:20 は
に変換できます。
return aText>;bText?-1:bText>;aText?1:0;
aText が bText より大きい比較値を返します。逆に、正の数を返します。どちらにも当てはまらない場合は、0 を返します。 ; 日付でも数値でもない場合 (現在、このドキュメントでは 3 種類のデータのみを変換できます: 1. 日付、2. 数値、3. 文字列と数値の組み合わせ)、
デフォルト:
return splitStr(data )
変換のためにsplitStr()に入れました

splitStr()の内容は次のとおりです:


function splitStr(data){
var re=/^[$a-zA -zu4e00-u9fa5 ]*(.*?)[a-zA -zu4e00-u9fa5 ]*$/
data=data.replace(re,'$1')
return parseFloat(data)
}


正規表現: 3 つの部分に分かれています 1 つの部分 ^[a-zA-Z]*; 最後の部分 [a-zA-Z]*$
次のように見ることができます/ /これは包含ブロックです。
最初の部分 ^ はターゲット文字列の先頭を意味し、[] は大文字と小文字に関係なく無視されることを意味し、その中にスペースが含まれています *
中央の部分 () はグループであり、グループ化されたコンテンツは RegExp '$1', '.' の最初の項目に配置されます。すべてに一致します (スペースを除く) *? 怠惰な方法です。
最後の部分 [] は次の * と最初の部分と同じです。 すべての文字が削除されます。
$ は一致する $ 記号を表します。 🎜>


コードをコピーします コードは次のとおりです。 function sortStr(index,dataType){
return function(a,b){
var aText=$(a).find('td:nth-child('index')' ).text();
var bText=$(b ).find('td:nth-child('index')').text();
if(dataType!='roomType'){
aText=Parse(aText,dataType)
bText =Parse(bText,dataType)
return aText>;bText?-1:bText>;aText?1:0;
}
else return aText.localeCompare(bText)
}
}


それ以外の場合は、localeCompare を比較に直接使用します。これは、次のような文字列を比較するための特別なメソッドです。数値は依然として 0 より大きい数値、負の数値、および 0 です。
コードの先頭の新しい日付と最後の新しい日付は、テーブルのソート時間で計算され、この時間は「スパン」に表示されます。真ん中の「th」のマーク これは、ソートの開始からソートの終了までのテーブル全体のソートにかかる時間をテストするためのものです。

完全なコード:



コードをコピー コードは次のとおりです:





表格排序





返回文章









































































































































































































































































































































































































房号 日期 房间类型 床位 容量 价格/晚 合计
u0628 9/14/2008 Std Hotel Room 2 Double (27 left) 2 4 人 $109.00 $436.00
u0631 10/4/2008 Lodge Rm/Shared Bath Q (4 left) 1 2 人 $109.00 $436.00
u0636 9/18/2008 Std Hotel Room Q (34 left) 1 2 人 $117.00 $466.00
u0638 9/19/2008 Std Hotel Room 2 Q (28 left) 2 4 人 $117.00 $466.00
u0612 9/1/2008 Studio Condo (10 left) 1 4 人 $149.00 $596.00
u0626 9/13/2008 Hotel Jr Suite K (4 left) 1 2 人 $149.00 $596.00
u0641 9/22/2008 Hotel Superior K (26 left) 1 2 人 $149.00 $596.00
u0602 8/31/2008 1 Bdrm Condo K (96 left) 1 4 人 $169.00 $676.00
u0616 10/8/2008 Studio Condo Murphy (5 left) NaN 4 人 $169.00 $676.00
u0623 10/2/2008 Studio Cabin Q (6 left) 1 2 人 $169.00 $676.00
u0633 9/16/2008 Studio Q/Murphy (6 left) 2 4 人 $169.00 $676.00
u0637 10/5/2008 Lodge Room Q (4 left) 1 2 人 $169.00 $676.00
u0622 9/11/2008 Hotel Loft Ste K/Q (3 left) 2 4 人 $179.00 $716.00
u0629 10/10/2008 1 Bdrm Condo K (76 left) 1 4 人 $179.00 $716.00
u0603 9/8/2008 Hotel Loft K/Q (16 left) 2 4 人 $189.00 $756.00
u0632 9/15/2008 Hotel Loft K/2T (15 left) 3 4 人 $189.00 $756.00
u0619 10/1/2008 Studio Cabin Firepl K (6 left) 1 2 人 $209.00 $836.00
u0608 10/7/2008 1 Bdrm Condo with Den K (1 left) 1 6 人 $222.00 $886.00
u0620 9/5/2008 2 Bdrm Condo K/K (25 left) 2 6 人 $229.00 $916.00
u0630 9/7/2008 2 Bdrm Condo K/2T (57 left) 3 6 人 $229.00 $916.00
u0634 10/11/2008 2 Bdrm Condo K/Q (88 left) 2 6 人 $229.00 $916.00
u0639 9/20/2008 1 Bdrm K/Murphy (19 left) 2 4 人 $229.00 $916.00
u0614 9/2/2008 2 Bdrm Townhome (7 left) 2 4 人 $239.00 $956.00
u0610 9/10/2008 1 Bdrm Loft K/Q+2T/Murphy (5 left) 5 8 人 $269.00 $1076.00
u0625 9/12/2008 2 Bdrm K/Q/Murphy (6 left) 3 6 人 $269.00 $1076.00
u0640 9/21/2008 Exec. 2 Bdrm K/2Q/Murphy (2 left) 4 8 人 $269.00 $1076.00
u0606 9/26/2008 2 Bdrm Cabin K/Q+T (2 left) 3 5 人 $279.00 $1116.00
u0613 9/29/2008 Lodge 2 Bdrm Suite Q/Q (1 left) 2 4 人 $279.00 $1116.00
u0624 10/3/2008 1 Bdrm Cabin Firepl K (3 left) 1 4 人 $279.00 $1116.00
u0618 9/4/2008 2 Bdrm Condo w/Den Custom (1 left) 2 6 人 $329.00 $1316.00
u0627 10/9/2008 3 Bdrm Condo K/Q/Q (6 left) 3 8 人 $339.00 $1356.00
u0642 9/23/2008 2 Bdrm Cabin Firepl K/Q+T (1 left) 3 7 人 $339.00 $1356.00
u0615 9/3/2008 3 Bdrm Condo K/Q/2T (2 left) 4 8 人 $379.00 $1516.00
u0607 9/9/2008 2 Bdrm. Loft K/Q/Q,3T/SS (9 left) 6 11 人 $389.00 $1556.00
u0609 9/27/2008 Dlx 1 ベッドルーム キャビン Firepl K (残り 3 室) 1 4人 $389.00 $1556.00
u0635 2008/9/17 エグゼクティブ 2 ベッドルーム ロフト K/K/2Q/SS (残り 1 つ) 4 10人 $399.00 $1596.00
u0621 2008 年 9 月 6 日 ベッドルーム 3 室のタウンホーム (残り 3 件) 3 6人 $409.00 $1636.00
u0601 2008/9/24 3 ベッドルーム キャビン K/Q T/2T (残り 1 つ) 5 9人 $469.00 $1876.00
u0605 2008 年 9 月 25 日 Dlx 1Bd Loft,K,Q/T firepl (残り 1 つ) 3 6人 $469.00 $1876.00
u0611 2008/9/28 Dlx 2 Bdm Cbn Firepl K/2T (残り 3 つ) 2 6人 $469.00 $1876.00
u0604 2008 年 10 月 6 日 デラックス 3 ベッドルーム コンドミニアム K/Q/Q (残り 2) 3 8人 $499.00 $1996.00
u0617 2008/9/30 Dlx3Bdm/2Bth/FP/K/QT/QT (残り 1 個) 5 8人 $549.00 $2196.00



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は?
または:
Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は? または: Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Apr 04, 2025 pm 05:36 PM

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

JavaScriptは学ぶのが難しいですか? JavaScriptは学ぶのが難しいですか? Apr 03, 2025 am 12:20 AM

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

PowerPointはJavaScriptを実行できますか? PowerPointはJavaScriptを実行できますか? Apr 01, 2025 pm 05:17 PM

JavaScriptはPowerPointで実行でき、外部JavaScriptファイルを呼び出したり、VBAを介してHTMLファイルを埋め込んだりすることで実装できます。 1. VBAを使用してJavaScriptファイルを呼び出すには、マクロを有効にし、VBAプログラミングの知識を持つ必要があります。 2。JavaScriptを含むHTMLファイルを埋め込みます。これは、シンプルで使いやすいが、セキュリティ制限の対象となります。利点には、拡張機能と柔軟性が含まれますが、欠点にはセキュリティ、互換性、複雑さが含まれます。実際には、セキュリティ、互換性、パフォーマンス、ユーザーエクスペリエンスに注意を払う必要があります。

See all articles