2013-07-03 17 views
10

मुझे एक AJAX फ़ंक्शन मिला है जो ड्रॉपडाउन में चयनित मान के आधार पर कुछ मान प्राप्त करता है। मैं एक सबस्ट्रिंग के आधार पर कुछ फ़ील्ड को सक्षम/अक्षम करने की कोशिश कर रहा हूं। मैंने पाया 'शामिल' फ़ायरफ़ॉक्स में काम करने के लिए है, लेकिन क्रोम में परीक्षण और सफारी मुझसे कहता वस्तुjQuery:() फ़ायरफ़ॉक्स में काम करता है लेकिन क्रोम/सफारी

if ($d.attr("embed").contains('$var_2$')) { 
    //do something 
} else { 
    // do something else 
} 

वहाँ एक वैकल्पिक करने के लिए होता है कि सभी ब्राउज़रों में काम करेंगे है 'कोई विधि शामिल है' कि?

उत्तर

18

तुम क्या प्रयोग कर रहे हैं वहाँ String.contains, नहीं jQuery.contains है। ऐसा इसलिए है क्योंकि आप .attr के रिटर्न-वैल्यू पर फ़ंक्शन का उपयोग कर रहे हैं, जो एक स्ट्रिंग है, jQuery-ऑब्जेक्ट नहीं।

jQuery.contains() (जो काम करता है पार ब्राउज़र), तो आप इस बजाय कर सकता है उपयोग करने के लिए:

$d.contains('$var_2$') 

लेकिन ध्यान दें कि यह केवल निर्दिष्ट विशेषता लेकिन पूरे तत्व के बजाय खोज नहीं होंगे।

तो क्या आप सबसे अधिक संभावना करने के लिए String.indexOf() उपयोग कर रहा है चाहता हूँ (यह भी जो क्रॉस-ब्राउज़र काम करता है):

$d.attr("embed").indexOf('$var_2$') != -1 
+0

विस्तृत विवरण के लिए धन्यवाद, कि काम किया! मैंने इंडेक्स को एक विकल्प के रूप में सुझाव दिया था और कोशिश की लेकिन मेरा वाक्यविन्यास बंद होना चाहिए क्योंकि मुझे वांछित परिणाम नहीं मिल रहे थे। आपके दिए गए वाक्यविन्यास को पूरी तरह से काम करता है। एक बार फिर धन्यवाद। – richj

+0

आपका स्वागत है। – oezi

+0

बस इस उत्तर का एक अपडेट: मोज़िला देव ने ईएस 6 और संगतता कारणों के लिए फ़ायरफ़ॉक्स 48 में 'शामिल' करने के लिए उस विधि का नाम बदलने का निर्णय लिया। – beendr

0

आप इसके बजाय indexOf का उपयोग कर सकते हैं।

3

आप indexOf का उपयोग कर सकते हैं, यह सभी ब्राउज़रों में काम करना चाहिए।

if ($d.attr("embed").indexOf('$var_2$') > -1) { 
    //do something 
} else { 
    // do something else 
} 
संबंधित मुद्दे