jquery

2011-10-31 7 views
10

के साथ फ़िल्टर तालिका पंक्तियों को मैं कॉलम मान के आधार पर तालिका पंक्तियों को फ़िल्टर करने के बारे में जानना चाहता हूं। प्लगइन्स को बाहर रखा गया, मैं यह जानना चाहता हूं कि इस काम को कैसे काम करना है।jquery

उत्तर

11

आपका प्रश्न काफी अस्पष्ट है, लेकिन सामान्य विचार कुछ इस तरह होगा:

$("td").filter(function() { 
    return $(this).text().indexOf("whatever") !== -1; 
}).parent().remove(); 

यहाँ एक working example है। यह पहले सभी तालिका कक्षों का चयन करता है, फिर उन्हें कुछ पाठ के आधार पर फ़िल्टर करता है, और किसी भी शेष पंक्तियों के माता-पिता को हटा देता है (जो tr होना चाहिए)।

आप अलग-अलग स्तंभों की परवाह नहीं करते हैं, तो आप tr तत्वों का चयन कर सकते हैं और parent करने के लिए कॉल से छुटकारा पाने के। यह अभी भी काम करेगा क्योंकि text चयनित tr के सभी बच्चों के पाठ को वापस कर देगा।

अद्यतन टिप्पणी

के आधार पर ऊपर पूरी तरह से डोम से मिलान तालिका पंक्तियों को हटा देगा। यदि आप उन्हें केवल छिपाना चाहते हैं, तो आप remove को hide से प्रतिस्थापित कर सकते हैं।

$("tr").show(); 

कौन सा सब tr तत्वों का चयन करता है और उन्हें (जो कि पहले से ही दिखाई दे प्रभावित नहीं होगा रहे हैं पता चलता है, तो बस लोगों को पहले से छिपा हुआ: आप तो पंक्तियों फिर से दिखाई तो आप बस की तरह कुछ कर सकता है बनाना चाहते थे तो फिर से दिखाई देगा)।

+0

यह काम .hide() के साथ भी काम करेगा? यदि यह संभव है, तो फ़िल्टर को रीसेट करना चाहते हैं तो सभी तालिका पंक्तियों को दिखाने/खोलने का एक अच्छा तरीका क्या होगा? – mko

+1

@ जॉन - हाँ, 'छुपा' का उपयोग करके ठीक काम करेगा। मेरा संपादन देखें। –

0

सभी तालिका-फ़िल्टरिंग के पीछे मूल विचार सभी पंक्तियों को छिपाना है और फिर उन लोगों को दिखाएं जहां <td> की सामग्री में सर्चस्ट्रिंग शामिल है।

jQuery के साथ जादू इस तरह से किया जाता है:

$('tr').filter(":contains('" + searchstring + "')").show(); 

लेकिन इसके लिए jQuery का उपयोग करने की आवश्यकता नहीं है - मैं इसके लिए एक सादे जे एस-समाधान कोडित गए हैं। आप इसे here पा सकते हैं।