2011-06-10 30 views
15

चलाएं मुझे केवल एक jquery चलाने की आवश्यकता है यदि बोल्ड तत्व में विशेष टेक्स्ट होता है। मैं क्या गलत कर रहा हूं?यदि कुछ टेक्स्ट शामिल है, तो jquery

<script> 
if ($('b:contains('Choose a sub category:')')) { 

$("td.colors_backgroundneutral").css("background-color","transparent"); 
$("td.colors_backgroundneutral").children(':first-child').attr("cellpadding","0"); 
}; 
</script> 
+4

उपयोग दोहरे उद्धरण चिह्नों ("") एकल उद्धरण ('') के अंदर ... आप एकल उद्धरण जो स्ट्रिंग टूट रहा है अंदर एकल उद्धरण का उपयोग कर रहे हैं। –

उत्तर

28

एकल कोट, जो स्ट्रिंग टूट जाता है अंदर एकल उद्धरण का उपयोग कर के अलावा, आप एक अगर बयान के अंदर एक jQuery चयनकर्ता का उपयोग कर रहे हैं। This selector केवल उन लोगों को अपने b टैग फ़िल्टर करता है जिनमें "उप श्रेणी चुनें"; और फिर उन तत्वों की एक सूची देता है। यह एक बूलियन वापस नहीं करता है। इसके बजाय, इसलिए जैसे .contains() विधि का उपयोग करें,:

if($("b").contains("Choose a sub category")) { 
    // do stuff 
} 

आप अधिक here

संपादित पढ़ सकते हैं:

: .contains() विधि अब मान्य प्रतीत होता है के बाद से, यहाँ एक शुद्ध जे एस समाधान है
var el = document.getElementById("yourTagId") // or something like document.getElementsByTagName("b")[0] if you don't want to add an ID. 
if (el.innerHTML.indexOf("Choose a sub category") !== -1) { 
    // do stuff 
} 
+4

दुर्भाग्यवश ऐसा लगता है कि यह 'jQuery() है। इसमें' विधि मौजूद नहीं है, या कम से कम मेरे सभी प्रयासों का उपयोग करने के लिए 'इस तरह के फ़ंक्शन कॉल' की त्रुटि ट्रिगर नहीं होती है। 'jQuery.contains' मौजूद है, लेकिन यह विशेष रूप से डीओएम तत्वों के साथ उपयोग के लिए है, और पाठ के तार नहीं। व्यक्तिगत रूप से मैं ''शामिल' चयनकर्ता बनाने के बजाय एक विधि कॉल का उपयोग करता हूं, इसलिए अगर jQuery ने इसे हटा दिया है तो यह परेशान है। – Pebbl

+0

@Pebbl यह jQuery के साथ समस्या है। यहाँ मूल जेएस रोल करने के लिए बेहतर है, क्योंकि यह केवल कुछ लाइनें लंबी है। –

+0

यदि यह समाधान कभी भी पाठ के लिए काम करता है तो यह अब [इस दस्तावेज़ीकरण] (https://api.jquery.com/jQuery.contains/) के अनुसार नहीं करता है और इसलिए जवाब अब सही के रूप में चिह्नित नहीं किया जाना चाहिए। ovahernow का समाधान प्रश्न के अनुसार आवश्यक पाठ के लिए काम करता है। – Luke

17

मैंने यह निर्धारित करने के लिए हमेशा इसका उपयोग किया है कि कोई तत्व मौजूद है या नहीं:

if ($('b:contains("Choose a sub category:")').length > 0) { /*do things*/} 
+0

मुझे यकीन नहीं है कि मुझे क्यों हटाया गया था क्योंकि मौजूदा तत्वों की जांच करने के लिए यह अनुशंसित तरीका था: http://stackoverflow.com/questions/4592493/jquery-check-if-element-exists – ovaherenow

+1

मुझे न तो; मेरा मानना ​​है कि डाउनवॉटर ने इसे आदर्श के रूप में नहीं देखा क्योंकि इस विशेष स्थिति के लिए समर्पित एक jQuery '.contains()' विधि है। याद रखें, ओपी यह जांचना नहीं चाहता कि यह मौजूद है या नहीं, वह सिर्फ यह देखना चाहता है कि बोल्ड टैग में टेक्स्ट है या नहीं। जबकि हमारे दोनों समाधान काम करते हैं, मेरा सिर्फ एक और अधिक अर्थपूर्ण रूप से सही है। :) हालांकि मैं तुम्हें ऊपर उठाया। :) –

+0

धन्यवाद टॉम। मैं भी तुम्हारे साथ जाऊंगा। मैं बस अपने मौजूदा कोड को ठीक करना चाहता था। मैंने तुम्हारा भी ऊपर उठाया है। – ovaherenow

4
if ($("b").has(":contains('Choose a sub category:')").length) { 
/*Your Stuff Here*/ 
} 
संबंधित मुद्दे