2011-05-26 15 views
45

मुझे tr तत्व प्राप्त करने की आवश्यकता है जिसमें td तत्व शामिल है जिसमें विशिष्ट टेक्स्ट होता है। td में वह टेक्स्ट और केवल वह टेक्स्ट होगा (इसलिए मुझे text = 'foo'text contains 'foo' तर्क नहीं चाहिए)।jQuery - विशिष्ट टेक्स्ट युक्त तालिका कक्ष युक्त टेबल पंक्ति खोजें

var tableRow = $(table td[text = 'foo']).parent('tr'); 

किसी को भी सही सिंटैक्स प्रदान कर सकते हैं:

तो मैं निम्नलिखित 'छद्म jQuery' के बराबर की ज़रूरत है?

उत्तर

78

वैसा करने के लिए filter() उपयोग कर सकते हैं:

var tableRow = $("td").filter(function() { 
    return $(this).text() == "foo"; 
}).closest("tr"); 
+0

जादुई उपयोग के साथ खोज() विधि द्वारा निष्पादित कर सकते हैं। धन्यवाद। – David

+1

एक हालिया दृष्टिकोण – TFD

+2

@ टीएफडी के लिए नीचे दिए गए @pi उत्तर को भी चेक करें, यह दृष्टिकोण थोड़ा अलग है, क्योंकि '() 'मैचों में सबस्ट्रिंग्स हैं - यह उन तत्वों से मेल खाएगा जिनके पाठ' foobar' है, उदाहरण के लिए, न केवल' foo'। –

12
$(function(){ 
    var search = 'foo'; 
    $("table tr td").filter(function() { 
     return $(this).text() == search; 
    }).parent('tr').css('color','red'); 
}); 

पंक्तियों जो एक सेल जिसका पाठ 'foo' है के लिए पाठ लाल हो जाएगा।

31

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मैंने सोचा कि मैं एक तालिका में स्ट्रिंग की खोज करने के लिए एक विकल्प [मजबूत, लेकिन सरल] दृष्टिकोण साझा नहीं कर सकता।

$("tr:contains(needle)"); // जहां सुई वह पाठ है जिसे आप खोज रहे हैं।

उदाहरण के लिए, यदि आप पाठ 'बॉक्स' के लिए खोज रहे हैं, कि होगा:

$("tr:contains('box')"); 

यह इस पाठ के साथ सभी तत्वों को लौट आते हैं। अतिरिक्त मापदंड इसे नीचे संकीर्ण करने के लिए अगर यह कई तत्वों

+0

इस समाधान में कोई भी tr शामिल होगा जिसमें वह शामिल है। तो यदि आपके पास एक टेबल के भीतर एक टेबल है .. (आदि) तो यह शीर्ष tr चुन देगा और इसके नीचे सबकुछ छुपाएगा, लेकिन ओपी निकटतम tr चाहता है। – Malachi

2

सभी टीडी के दशक में यह पाठ प्रत्येक टीआर और दिखाएँ/छिपाएँ टीआर के अंदर खोज करेंगे खोज पाठ के आधार पर

$.each($(".table tbody").find("tr"), function() {        

       if ($(this).text().toLowerCase().replace(/\s+/g, '').indexOf(searchText.replace(/\s+/g, '').toLowerCase()) == -1) 
        $(this).hide(); 
       else 
        $(this).show(); 
}); 
0
<input type="text" id="text" name="search"> 
<table id="table_data"> 
     <tr class="listR"><td>PHP</td></tr> 
     <tr class="listR"><td>MySql</td></tr> 
     <tr class="listR"><td>AJAX</td></tr> 
     <tr class="listR"><td>jQuery</td></tr> 
     <tr class="listR"><td>JavaScript</td></tr> 
     <tr class="listR"><td>HTML</td></tr> 
     <tr class="listR"><td>CSS</td></tr> 
     <tr class="listR"><td>CSS3</td></tr> 
</table> 

$("#textbox").on('keyup',function(){ 
     var f = $(this).val(); 
     $("#table_data tr.listR").each(function(){ 
      if ($(this).text().search(new RegExp(f, "i")) < 0) { 
       $(this).fadeOut(); 
      } else { 
       $(this).show(); 
      } 
     }); 
    }); 

Demo रिटर्न इस्तेमाल किया जा सकता आप RegExp मिलान पाठ

संबंधित मुद्दे