2011-12-22 7 views
14

चलो कहते हैं कि मैं अपनी सामग्री div में इनमें से कई करते हैं: <cite class="fn">blabla</cite>jQuery - देखें कि क्या टैग की सामग्री तो sometext के बराबर है कुछ करना

मैं हर cite टैग की सामग्री (कैसे जांच कर सकते हैं इस मामले में: blabla) वर्ग fn के साथ यह देखने के लिए कि क्या यह "कुछ समय" के बराबर है, फिर इसके रंग को लाल रंग में बदलें?

बहुत आसान।

$('cite.fn').each(function() { 
    var el = $(this); 
    if (el.text() === 'sometext') { 
    el.css({ 'color' : 'red' }); 
    } 
}); 

यह प्रत्येक cite वर्ग fn है कि के खिलाफ एक समारोह आग:

उत्तर

28
$('cite.fn:contains(blabla)').css('color', 'red'); 

संपादित करें: यह है कि "blablablabla" से मेल खाएगी के रूप में कुंआ।

$('cite.fn').each(function() { 
    if ($(this).text() == 'blabla') { 
     $(this).css('color', 'red'); 
    } 
}); 

यह अधिक सटीक होना चाहिए।

संपादित करें: वास्तव में, मुझे लगता है कि bazmegakapa के समाधान और अधिक सुरुचिपूर्ण है:

$('cite.fn').filter(function() { 
    return $(this).text() == 'blabla'; 
}).css('color', 'red');; 
+0

' textblabla 'से भी मेल खाता है, जो खोज शब्द आसानी से एक सबस्ट्रिंग हो सकता है, जो समस्याएं पैदा कर सकता है। –

2

आप संभवतः की तरह कुछ कर सकता है। यह फ़ंक्शन जांचता है कि वर्तमान cite का मान 'कभी भी' के बराबर है या नहीं।

यदि यह है, तो हम पर सीएसएस color (टेक्स्ट-रंग) गुण बदलते हैं।

नोट मैं इस उदाहरण में jQuery का उपयोग कर रहा हूं, क्योंकि आपने विशेष रूप से अपने प्रश्न jQuery को टैग किया है। downvote पर ध्यान न दें, यह इससे पहले कि मैं (el.val() बजाय el.text()) लिखने में कोई त्रुटि है कि मैं बनाया था

+2

@kolink: उसके बाद आप आसानी से शेष तत्वों पर कमांड चलाने कर सकते हैं। बीटीडब्ल्यू यह jQuery नहीं है जो लोगों को बेवकूफ बनाता है, यह संपूर्ण इंटरनेट है। – Matt

+3

@ कोलिंक आप पहले भाग के साथ सही हैं। दूसरे भाग के लिए ... आप अभी भी अपनी टिप्पणी संपादित कर सकते हैं। jQuery कोई बेवकूफ बनाता है। – kapa

+4

@ कोलिंक मूल जावास्क्रिप्ट का उपयोग करते हुए आपको घमंडी बना देता है? –

0

संपादित jQuery के बिना लागू किया गया था:

var elms = document.querySelectorAll("cite.fn"), l = elms.length, i; 
for(i=0; i<l; i++) { 
    if((elms[i].innerText || elms[i].textContent) == "blabla") { 
     elms[i].style.color = "red"; 
    } 
} 
+2

ध्यान दें कि [querySelectorAll मूल रूप से IE7 और नीचे में काम नहीं करेगा] (http://caniuse.com/queryselector)। इस बारे में चिंता करने की ज़रूरत नहीं है कि जावास्क्रिप्ट जैसे जावास्क्रिप्ट ढांचे का उपयोग करने का लाभ होगा। – isNaN1247

10

आप अद्भुत .filter() विधि का उपयोग कर सकते। यह अपने पैरामीटर के रूप में एक फ़ंक्शन ले सकता है, जो jQuery संग्रह के तत्वों को उनके परीक्षण को पास करने वाले लोगों को कम करेगा (जिसके लिए फ़ंक्शन सत्य लौटाता है)। तो आप() या .text() के बजाय .html करने के लिए इसे बदल सकते हैं और यह काम करेंगे

var searchText = 'blabla'; 

$('cite.fn').filter(function() { 
    return $(this).text() === searchText; 
}).css('color', 'red'); 

jsFiddle Demo

+0

jQuery प्रदर्शन के बारे में बेहतर बेहतर चयनकर्ता बेहतर है? उदाहरण: '$ (" cite.fn: इसमें ('"+ searchText +"') ") फ़िल्टर (फ़ंक्शन() {वापसी $ (यह) .text()। लंबाई == searchText.length});' –

+0

@ पीटरक्रॉस मैं नहीं कहूंगा कि यह बेहतर है। ':()' मानक चयनकर्ता नहीं है, इसलिए jQuery को अपने इंजन का उपयोग करना है, न कि तेज़ देशी (जिसे यह आमतौर पर उपयोग करता है)। तो आप एक तरफ क्या जीतते हैं, आप दूसरे पर हार जाते हैं। आप jsPerf बेंचमार्क कर सकते हैं और परिणाम यहां पोस्ट कर सकते हैं। – kapa

+0

अच्छा, [परीक्षण वहां है] (http://jsperf.com/comparing-jquery-for-check-if-the-tag-content-is-equals) (आप लिंक देख सकते हैं और गलत होने पर परीक्षण को सही कर सकते हैं)। प्री-सिलेक्टर रणनीति अच्छी नहीं है, आपका मूल कोड तेज़ है। –

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