찾다
웹 프론트엔드JS 튜토리얼jquery_jquery를 기반으로 한 테이블 정렬

많은 전문가들이 직접 해보고 싶어서 jquery용 특수 정렬 라이브러리도 작성했습니다.
물론 실행 속도는 정말 받아들일 수 없지만 천천히 개선하겠습니다.
참고: 다음은 코드의 일부입니다. 데모를 확인하세요.
문서가 로드된 후 'th'에 클릭 이벤트를 추가하세요.
1.
$('th').click(function(){
var date1=(new Date()).getTime()
var dataType=$(this).attr( 'dataType');
클릭한 개체의 사용자 정의 속성 dataType을 찾습니다. 물론 이는 W3C 표준을 준수하지 않으며 ID나 클래스로 정의할 수도 있지만 이 점이 직관적이라고 생각합니다. Transitional 모드에서도 사용할 수 있습니다.
2.
var index=$('th').index(this)
문서에서 클릭한 개체의 위치를 ​​찾습니다. 그리고 1을 추가합니다. 1을 추가하는 것은 클릭한 개체의 위치를 ​​제공하는 것입니다. 이는 해당 열의 td에 스타일을 추가하여 수행됩니다.
:eq()를 사용하면 td의 전체 문서 위치만 가져올 수 있기 때문입니다. :nth-child()를 사용하면 자체 상위 요소에서 각 td를 가져올 수 있습니다.
3.
var row=$('tbody tr')
tbody의 모든 ​​tr ​​을 변수 행에 저장합니다. .
4.
$.each(row, function(i){ arr[i]=row[i] })
모든 행을 탐색하여 arr 배열에 삽입합니다. >5.if($(this).hasClass('select')) {arr.reverse()}
이 'th'를 클릭하면 선택 스타일이 추가됩니다. 원래 arr 배열은 직접 반전됩니다.
else { <.>arr.sort(sortStr(index,dataType))
$('.select').removeClass(); :nth-child(' index ')').addClass(' select');
$(this).addClass('select')
}
그렇지 않으면 sort() 메서드를 사용하여 arr을 정렬하세요. sort() 메소드는 1개의 함수를 허용하며, 이 함수는 2개의 함수를 허용합니다. 여기서는 두 개의 매개변수가 있는
sortStr()
으로 정의합니다. >


코드 복사


코드는 다음과 같습니다.

if(dataType!='roomType'){
aText=Parse(aText,dataType)
bText=Parse (bText,dataType)
return aText>;;bText?-1:bText> ;aText?1:0

}
else return aText.localeCompare(bText)
}



첫 번째는 index 이며, 클릭 이벤트에서 얻은 변수입니다. 이 변수에는 문서에서 클릭된 '번째' 위치, 즉 숫자가 포함됩니다.
Jquert의 index() 메소드는 객체의 위치를 ​​가져옵니다. 이 위치는 0부터 시작합니다. 이 예에는 6개의 '번째'가 있습니다.

두 번째 매개변수는 각 항목의 속성 값을 포함하는 dataType입니다. '일'.

sortStr()에는 비교 함수가 포함되어 있습니다. 이 함수에는 2개의 매개변수가 있습니다. 각 매개변수는 'tbody tr'을 나타냅니다. (여기서 a와 b는 비교해야 하는 tr을 나타냅니다.) 이 두 매개변수는 이를 포함하는 함수 환경에서 얻습니다. sort() 메서드의 매개변수는 함수입니다.
이 익명 함수는 작업 배열 Quote를 반환합니다.
arr에는 배열이 포함되어 있습니다. 각 배열의 값에는 tbody의 tr에 대한 참조가 포함되어 있습니다. 정렬 함수는 반환된 값에 따라 원래 배열의 요소 위치를 직접 변경합니다. $(a).find('td:nth-child(' index ')').text();
비교해야 하는 행의 td 중 하나에 포함된 텍스트를 가져옵니다.
클릭 이벤트에서 얻은 인덱스 변수가 매개변수가 되어 여기에 전달되어 th에 해당하는 td의 위치를 ​​가져옵니다.




code


코드는 다음과 같습니다.


if(dataType!='roomType'){
aText=Parse(aText,dataType) bText =Parse(bText,dataType) return aText>;bText?-1:bText>;aText?1:0; } 정렬해야 하는 유형이 숫자와 문자를 포함하지 않음(roomType 값이 있기 때문에 요소에 숫자와 문자가 포함됨), 변환을 위해 획득한 td의 텍스트 값과 dataType을
Parse()에 전달,




코드 복사

코드는 다음과 같습니다.


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


숫자 유형을 부동 소수점 숫자로 직접 변환하는 경우

parseFloat(data)||0을 반환합니다.
Boone의 변환 개체 문자열이 나타나면 이 문서에 A NaN이 포함되어 있으므로 0을 반환합니다. 변환할 수 없으므로 0이 반환됩니다.

날짜 유형인 경우 Date.parse를 사용하여 직접 숫자로 변환할 수 있습니다. 이 변환은 변환 매개변수의 시간인
이것은 초 단위로 정확할 수 있는 시간 변환을 시도했습니다. 예를 들어 1971/01/2 18:12:20, 01/2/1970 18:12:20은
그런 다음
로 변환할 수 있습니다.
return aText>;bText?-1:bText>;aText?1:0;
aText가 bText보다 큰 비교 값을 반환합니다. 0보다 작은 숫자를 반환합니다. 반대로 양수를 반환합니다. 둘 다 해당되지 않으면 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')
parseFloat(data) 반환
}

정규식: 세 부분으로 나누어 1부분^[a-zA-Z]*; 중간 부분(.*?) 끝 부분 [a-zA-Z]*$
이렇게 볼 수 있습니다/ /컨테이닝 블록입니다.
첫 번째 ^ 부분은 대상 문자열의 시작을 의미하고, []는 대소문자에 관계없이 A~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를 직접 사용하십시오. 이는 다음과 같이 문자열을 비교하는 특별한 방법입니다. 문자열 'a' 반환된 문자열 'b'보다 앞에 순위가 매겨집니다. 숫자는 여전히 0보다 큰 숫자, 음수 및 0입니다.

코드 시작 부분의 새 날짜와 끝 부분의 새 날짜는 테이블 정렬 시간으로 계산되며, 이 시간은 'span'에 표시됩니다. 가운데 '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 Bdrm Cabin Firepl K (3개 남음) 1 4인 $389.00 $1556.00
u0635 2008년 9월 17일 Exec 2 Bdrm Lft 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으로 문의하세요.
자바 스크립트 행동 : 실제 예제 및 프로젝트자바 스크립트 행동 : 실제 예제 및 프로젝트Apr 19, 2025 am 12:13 AM

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

JavaScript 및 웹 : 핵심 기능 및 사용 사례JavaScript 및 웹 : 핵심 기능 및 사용 사례Apr 18, 2025 am 12:19 AM

웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.

JavaScript 엔진 이해 : 구현 세부 사항JavaScript 엔진 이해 : 구현 세부 사항Apr 17, 2025 am 12:05 AM

보다 효율적인 코드를 작성하고 성능 병목 현상 및 최적화 전략을 이해하는 데 도움이되기 때문에 JavaScript 엔진이 내부적으로 작동하는 방식을 이해하는 것은 개발자에게 중요합니다. 1) 엔진의 워크 플로에는 구문 분석, 컴파일 및 실행; 2) 실행 프로세스 중에 엔진은 인라인 캐시 및 숨겨진 클래스와 같은 동적 최적화를 수행합니다. 3) 모범 사례에는 글로벌 변수를 피하고 루프 최적화, Const 및 Lets 사용 및 과도한 폐쇄 사용을 피하는 것이 포함됩니다.

Python vs. JavaScript : 학습 곡선 및 사용 편의성Python vs. JavaScript : 학습 곡선 및 사용 편의성Apr 16, 2025 am 12:12 AM

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스Apr 15, 2025 am 12:16 AM

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지Apr 14, 2025 am 12:05 AM

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

JavaScript 엔진 : 구현 비교JavaScript 엔진 : 구현 비교Apr 13, 2025 am 12:05 AM

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

브라우저 너머 : 실제 세계의 JavaScript브라우저 너머 : 실제 세계의 JavaScriptApr 12, 2025 am 12:06 AM

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

See all articles

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.