दिलचस्प पोस्ट
मैं एक PHP घातक त्रुटि कैसे प्राप्त करूं? अतुल्यकालिक प्रतिनिधि विधि को एंडिनवोक को कॉल करने की आवश्यकता क्यों है? PHP के HTML DOMDocument के साथ HTML को पार्स करें आईओएस एप प्रक्रिया से हटा दिया गया था जब पता लगाने के लिए कैसे IIS एक्सप्रेस के लिए web.config में माइम मैपिंग जोड़ें किसी ऑरेंज को सरणी में कैसे जोड़ें पीडीओ का उपयोग करके आउट पैरामीटर के साथ संग्रहीत कार्यप्रणाली को कॉल करना ग्रहण में एक गीथहब प्रोजेक्ट आयात करना अनुपलब्ध कलाकृष्ण कॉम। Microsoft.sqlserver: sqljdbc4: जार: 4.0 विजुअल स्टूडियो में डीएलएल की निर्भरताओं को कॉपी करना सीएबी के साथ कस्टम सूची दृश्य में एकाधिक चयन निष्क्रिय समय के बाद माउस कर्सर छुपाएं यदि स्ट्रिंग्स को एनएटी में अपरिवर्तनीय है, तो सबस्ट्रिंग ओ (एन) समय क्यों लेते हैं? Pythonw.exe का उपयोग करते समय पायथन सबप्रोसीस। () विफल हो जाता है एक्स घंटे से पुराने फ़ाइलों को कैसे हटाएं

jQuery तालिका सॉर्ट

मेरे पास 4 कॉलम के साथ एक बहुत सरल HTML तालिका है:

Facility Name, Phone #, City, Specialty 

मैं चाहता हूं कि उपयोगकर्ता सुविधा नाम, और केवल शहर के अनुसार सॉर्ट करने में सक्षम हो।

मैं यह jQuery का उपयोग कैसे कर सकता हूँ?

Solutions Collecting From Web of "jQuery तालिका सॉर्ट"

यदि आप सभी घंटियाँ और सीटी से बचने के लिए चाहते हैं, तो मैं यह साधारण प्रकार sortElements प्लगइन का सुझाव दे सकता हूं। उपयोग:

 var table = $('table'); $('.sortable th') .wrapInner('<span title="sort this column"/>') .each(function(){ var th = $(this), thIndex = th.index(), inverse = false; th.click(function(){ table.find('td').filter(function(){ return $(this).index() === thIndex; }).sortElements(function(a, b){ if( $.text([a]) == $.text([b]) ) return 0; return $.text([a]) > $.text([b]) ? inverse ? -1 : 1 : inverse ? 1 : -1; }, function(){ // parentNode is the element we want to move return this.parentNode; }); inverse = !inverse; }); }); 

और एक डेमो (सॉर्ट करने के लिए "शहर" और "सुविधा" कॉलम-हेडर पर क्लिक करें)

मैं इस पर आया, और सोचा कि मैं अपने 2 सेंट में फेंक दूँगा आरोही क्रमबद्ध करने के लिए कॉलम हेडर पर क्लिक करें, और फिर उतरते क्रमबद्ध करने के लिए।

  • क्रोम, फ़ायरफ़ॉक्स, ओपेरा और आईई में काम करता है (8)
  • केवल JQuery का उपयोग करता है
  • क्या अल्फा और अंकीय छँटाई – बढ़ते और उतरते हैं
 $('th').click(function(){ var table = $(this).parents('table').eq(0) var rows = table.find('tr:gt(0)').toArray().sort(comparer($(this).index())) this.asc = !this.asc if (!this.asc){rows = rows.reverse()} for (var i = 0; i < rows.length; i++){table.append(rows[i])} }) function comparer(index) { return function(a, b) { var valA = getCellValue(a, index), valB = getCellValue(b, index) return $.isNumeric(valA) && $.isNumeric(valB) ? valA - valB : valA.localeCompare(valB) } } function getCellValue(row, index){ return $(row).children('td').eq(index).text() } 
 table, th, td { border: 1px solid black; } th { cursor: pointer; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr> <th>Country</th> <th>Date</th> <th>Size</th> </tr> <tr> <td>France</td> <td>2001-01-01</td> <td>25</td> </tr> <tr> <td>spain</td> <td>2005-05-05</td> <td></td> </tr> <tr> <td>Lebanon</td> <td>2002-02-02</td> <td>-17</td> </tr> <tr> <td><a href=#>Argentina</a></td> <td>2005-04-04</td> <td>100</td> </tr> <tr> <td>USA</td> <td></td> <td>-6</td> </tr> </table> 

अब तक, मैंने सबसे आसान प्रयोग किया है: http://datatables.net/

आश्चर्यजनक रूप से सरल … बस सुनिश्चित करें कि आप DOM प्रतिस्थापन मार्ग (IE, एक तालिका बनाते हैं और <thead> को पुन: स्वरूपित करते हैं) पर जाते हैं, तो सुनिश्चित करें कि आपकी मेज को <thead> और <tbody> साथ स्वरूपित करें या यह काम नहीं करेगा यही एकमात्र पकड़ा है

एजेएक्स के लिए भी समर्थन है, आदि। कोड के सभी वास्तव में अच्छे टुकड़ों के साथ, यह सभी को बंद करने के लिए भी बहुत आसान है। आपको आश्चर्य होगा कि आप क्या उपयोग कर सकते हैं, यद्यपि। मैंने एक "बेर" डेटाटाइल के साथ शुरुआत की जो केवल एक फ़ील्ड को हल करती थी और फिर महसूस किया कि कुछ विशेषताएं वास्तव में मैं क्या कर रहा हूं, इसके लिए वास्तव में प्रासंगिक थे। ग्राहक नई सुविधाओं को पसंद करते हैं

बोनस पूर्ण थीमरेल्डर समर्थन के लिए डेटाटैब को इंगित करता है ….

मेरे पास टेबलर के साथ ठीक भाग्य था, लेकिन यह उतना आसान नहीं है जितना आसान है, उतना ही अच्छी तरह से प्रलेखित नहीं है, और केवल सुविधाओं को ठीक करना है

हम सिर्फ इस चालाक उपकरण का प्रयोग शुरू कर चुके हैं: http://tablesorter.com/docs/

इस पर इसके उपयोग पर एक वीडियो है: http://www.highoncoding.com/Articles/695_Sorting_GridView_Using_JQuery_TableSorter_Plug_in.aspx

  $('#tableRoster').tablesorter({ headers: { 0: { sorter: false }, 4: { sorter: false } } }); 

एक सरल तालिका के साथ

 <table id="tableRoster"> <thead> <tr> <th><input type="checkbox" class="rCheckBox" value="all" id="rAll" ></th> <th>User</th> <th>Verified</th> <th>Recently Accessed</th> <th>&nbsp;</th> </tr> </thead> 

मेरा जवाब "सावधान रहना" होगा बहुत सारे jQuery तालिका-सॉर्टिंग ऐड-ऑन केवल ब्राउज़र के लिए आप जो पास करते हैं, उसे ठीक करें। कई मामलों में, आपको यह ध्यान रखना होगा कि टेबल डेटा के डायनेमिक सेट हैं, और संभावित रूप से डेटा की लाइनों की ज़िलियल्स शामिल कर सकते हैं।

आप उल्लेख करते हैं कि आपके पास केवल 4 कॉलम हैं, लेकिन अधिक महत्वपूर्ण बात, आप इसका उल्लेख नहीं करते कि हम यहां कितनी पंक्तियां बोल रहे हैं।

यदि आप डेटाबेस से ब्राउज़र में 5000 लाइनें पास करते हैं, यह जानकर कि वास्तविक डेटाबेस-तालिका में 100,000 पंक्तियाँ हैं, मेरा प्रश्न यह है कि तालिका को क्रमबद्ध बनाने में क्या बात है? एक उचित प्रकार के लिए, आपको क्वेरी को वापस डेटाबेस पर भेजना होगा, और डेटाबेस को (सॉर्ट करने के लिए वास्तव में एक उपकरण बनाया गया है) आपके लिए सॉर्ट करना होगा

हालांकि, आपके प्रश्न का सीधे उत्तर में, सबसे अच्छा सॉर्टिंग ऐड-ऑन मुझे मिला है इंग्रिड। कई कारण हैं कि मुझे यह ऐड-ऑन पसंद नहीं है ("अनावश्यक घंटी और सीटी …" जैसा कि आप कहते हैं), लेकिन सॉफ़्टवेयर के अनुसार इनमें से सबसे अच्छी सुविधाएं हैं, यह है कि यह एजेक्स का उपयोग करता है, और यह ' टी यह मान नहीं है कि इससे पहले कि यह अपने सॉर्ट करता है, आप पहले से ही इसे सभी डेटा पास कर चुके हैं

मैं समझता हूं कि यह उत्तर संभवत: आपकी आवश्यकताओं के लिए ओवरकिल (और 2 साल से अधिक देर से) है, लेकिन जब मेरे क्षेत्र के डेवलपर्स इस बिंदु को नजरअंदाज करते हैं तो मुझे नाराज़ हो जाता है इसलिए मुझे उम्मीद है कि किसी और को इसके ऊपर उठा लेगा।

मैं अब बेहतर महसूस कर रहा हूं।

यह एक ऐसा चार्ट है जो यह तय करने में सहायक हो सकता है कि इसका उपयोग करना है: http://blog.sematext.com/2011/09/19/top-javascript-dynamic-table-libraries/

मुझे इस स्वीकार किए गए उत्तर से प्यार है, हालांकि, शायद ही आपको एचटीएमएल को सॉर्ट करने की ज़रूरतें मिलती हैं और सॉर्टिंग दिशा का संकेत देने वाले आइकन नहीं जोड़े जाते हैं। मैंने स्वीकार किए गए उत्तर के उपयोग के उदाहरण को स्वीकार किया और मेरे परियोजना में बस बूटस्ट्रैप को जोड़ने और नीचे दिए गए कोड को जोड़कर शीघ्र तय किया:

<div></div>

प्रत्येक <th> अंदर ताकि आइकन सेट करने के लिए आपके पास जगह हो।

setIcon(this, inverse);

स्वीकार किए जाते हैं उत्तर के उपयोग से, लाइन के नीचे:

th.click(function () {

और setIcon विधि जोड़कर:

 function setIcon(element, inverse) { var iconSpan = $(element).find('div'); if (inverse == false) { $(iconSpan).removeClass(); $(iconSpan).addClass('icon-white icon-arrow-up'); } else { $(iconSpan).removeClass(); $(iconSpan).addClass('icon-white icon-arrow-down'); } $(element).siblings().find('div').removeClass(); } 

यहां एक डेमो है – आपको फ़ायरफ़ॉक्स या आईई में डेमो चलाने की जरूरत है, या डेमो काम करने के लिए क्रोम के माइम-टाइप जांच को अक्षम करें। यह एलेमेंट्स प्लगइन पर निर्भर करता है, जो एक बाहरी संसाधन के रूप में स्वीकार किए गए उत्तर से जुड़ा हुआ है। बिलकुल चौकन्ना!

आप jQuery प्लगइन ( प्रजनन ) का उपयोग कर सकते हैं जो सॉर्ट, फिल्टर और पेजिंग प्रदान करता है:

HTML:

 <table> <thead> <tr> <th sort='name'>Name</th> <th>Phone</th> <th sort='city'>City</th> <th>Speciality</th> </tr> </thead> <tbody> <tr b-scope="people" b-loop="person in people"> <td b-sort="name">{{person.name}}</td> <td>{{person.phone}}</td> <td b-sort="city">{{person.city}}</td> <td>{{person.speciality}}</td> </tr> </tbody> </table> 

जे एस:

 $(function(){ var data = { people: [ {name: 'c', phone: 123, city: 'b', speciality: 'a'}, {name: 'b', phone: 345, city: 'a', speciality: 'c'}, {name: 'a', phone: 234, city: 'c', speciality: 'b'}, ] }; breed.run({ scope: 'people', input: data }); $("th[sort]").click(function(){ breed.sort({ scope: 'people', selector: $(this).attr('sort') }); }); }); 

बेला पर काम उदाहरण

जेम्स की प्रतिक्रिया के लिए मैं इसे अधिक सार्वभौमिक बनाने के लिए केवल सॉर्टिंग फ़ंक्शन को बदल देगा। इस तरह यह वर्णों की तरह वर्णों की संख्या और संख्याओं को क्रमबद्ध करेगा।

 if( $.text([a]) == $.text([b]) ) return 0; if(isNaN($.text([a])) && isNaN($.text([b]))){ return $.text([a]) > $.text([b]) ? inverse ? -1 : 1 : inverse ? 1 : -1; } else{ return parseInt($.text([a])) > parseInt($.text([b])) ? inverse ? -1 : 1 : inverse ? 1 : -1; } 

@ निक ग्रीया का जवाब बहुत अच्छा है, लेकिन यह मेज हेडर कोशिकाओं के संभव रोशन तत्वों को ध्यान में नहीं लेता है (और संभवत: अन्य उत्तर भी ऐसा नहीं करते हैं)। यहां @ निक ग्रैली के उत्तर में सुधार हुआ है, जो यह तय करता है। इस उत्तर के आधार पर भी (धन्यवाद @ एंड्रयू ओर्लोव)

मैंने पुराने $ संस्करणों के साथ काम करने के लिए कस्टम $.isNumeric (धन्यवाद @ ज़ेड) के साथ $.isNumeric फ़ंक्शन को भी बदल दिया है।

इसे सक्रिय करने के लिए, class="sortable" <table> टैग में जोड़ें।

 $(document).ready(function() { $('table.sortable th').click(function(){ var table = $(this).parents('table').eq(0); var column_index = get_column_index(this); var rows = table.find('tbody tr').toArray().sort(comparer(column_index)); this.asc = !this.asc; if (!this.asc){rows = rows.reverse()}; for (var i = 0; i < rows.length; i++){table.append(rows[i])}; }) }); function comparer(index) { return function(a, b) { var valA = getCellValue(a, index), valB = getCellValue(b, index); return isNumber(valA) && isNumber(valB) ? valA - valB : valA.localeCompare(valB); } } function getCellValue(row, index){ return $(row).children('td').eq(index).html() }; function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); } function get_column_index(element) { var clickedEl = $(element); var myCol = clickedEl.closest("th").index(); var myRow = clickedEl.closest("tr").index(); var rowspans = $("th[rowspan]"); rowspans.each(function () { var rs = $(this); var rsIndex = rs.closest("tr").index(); var rsQuantity = parseInt(rs.attr("rowspan")); if (myRow > rsIndex && myRow <= rsIndex + rsQuantity - 1) { myCol++; } }); // alert('Row: ' + myRow + ', Column: ' + myCol); return myCol; }; 

मेरा वोट! jquery.sortElements.js और सरल jquery
बहुत सरल, बहुत आसान, धन्यवाद nandhp …

  $('th').live('click', function(){ var th = $(this), thIndex = th.index(), var table = $(this).parent().parent(); switch($(this).attr('inverse')){ case 'false': inverse = true; break; case 'true:': inverse = false; break; default: inverse = false; break; } th.attr('inverse',inverse) table.find('td').filter(function(){ return $(this).index() === thIndex; }).sortElements(function(a, b){ return $.text([a]) > $.text([b]) ? inverse ? -1 : 1 : inverse ? 1 : -1; }, function(){ // parentNode is the element we want to move return this.parentNode; }); inverse = !inverse; }); 

देई उमा मेघोरदा को डोगोगो
एक कॉड बेहतर! सभी समय में सभी गु में सभी तालिकाओं के लिए फ़ंक्शन … देखो!
डेमो