मुझे किस चयनकर्ता को इसके पाठ द्वारा एक विकल्प का चयन करने की आवश्यकता है?


207

मुझे यह जाँचने की आवश्यकता है कि <select>क्या कोई विकल्प है जिसका पाठ एक विशिष्ट मूल्य के बराबर है।

उदाहरण के लिए, यदि कोई है, तो <option value="123">abc</option>मैं "एबीसी" की तलाश करूंगा।

क्या ऐसा करने के लिए कोई चयनकर्ता है?

Im $('#select option[value="123"]');पाठ के लिए समान कुछ के लिए देख रहे हैं ।


हम्म ... hasSLaks जवाब में उपयोगी है, लेकिन Floyds जवाब में बात भी अच्छी है ... मुझे नहीं पता कि क्या स्वीकार करना है।
हैलवुड

क्या ये मामले संवेदनशील हैं? (IM केस-असंवेदनशीलता की तलाश में है और हमेशा कम में परिवर्तित हो सकता है
हैलवुड

1
मैं जावास्क्रिप्ट कोर फ़ंक्शन .toLowerCase () का उपयोग करता हूं और तुलना करता हूं, यदि केस-असंवेदनशीलता की आवश्यकता होती है। इसके अलावा, उस उत्तर को स्वीकार करें जो आपके पूछे गए प्रश्न के लिए सबसे अधिक उपयोगी है। :)
हरि पचुवेतिल

यह मल्टीसेप्ट एपीआई वाले ड्रॉपडाउन के लिए काम नहीं करता है ?? मैं सभी संभव समाधान बीटी कोई भाग्य की कोशिश की। मैं eric hynd के मल्टीसेप्ट ड्रॉपडॉवम API का उपयोग कर रहा हूं। क्या कोई इस समस्या को हल कर सकता है?
चैतन्य चंदुरकर

जवाबों:


320

यह मदद कर सकता है:

$('#test').find('option[text="B"]').val();

डेमो फिडल

यह आपको पाठ के साथ विकल्प देगा, Bन कि जिन पाठों में पाठ है उनमें से एक है B। उम्मीद है की यह मदद करेगा

JQuery के हाल के संस्करणों के लिए ऊपर काम नहीं करता है। जैसा कि नीचे Quandary ने टिप्पणी की है , यह वही है जो jQuery 1.9.1 के लिए काम करता है:

$('#test option').filter(function () { return $(this).html() == "B"; }).val();

अपडेटेड फ़िडेल


1
यह jquery के नवीनतम संस्करणों के साथ काम नहीं करता है (यदि आप <विकल्प> से 'मान =' निकालते हैं)
केविनडस

27
@ केविन्यूस: क्यों नीचे! जवाब तो jQuery के संस्करण के लिए था!
हरि पचुवेतिल

11
इसके बजाय, $ ('# परीक्षण विकल्प') का उपयोग करें। फ़िल्टर (फ़ंक्शन () {वापसी $ (यह) .html () = "" बी ";})। घाटी ();
स्टेफेन स्टीगर

84
@ कमेंटरी फिर भी, जब एक छोटी टिप्पणी पर्याप्त होगी, तो जवाब को वोट करने का यह वैध कारण नहीं है। या क्या आप उससे jQuery की हर नई रिलीज के लिए अपने सभी उत्तरों को पुनः प्राप्त करने की उम्मीद करते हैं?
WynandB

2
मुझे लगता है कि डाउनवोट इस तथ्य के कारण है कि उपरोक्त उदाहरण केवल चयनित मूल्य पाता है, और चयनित मान सेट नहीं करता है।
nivs1978

133

आप उन तत्वों का चयन करने के लिए :contains()चयनकर्ता का उपयोग कर सकते हैं जिनमें विशिष्ट पाठ होते हैं।
उदाहरण के लिए:

$('#mySelect option:contains(abc)')

यह जांचने के लिए कि क्या किसी दिए गए <select>तत्व में ऐसा विकल्प है, .has()विधि का उपयोग करें :

if (mySelect.has('option:contains(abc)').length)

<select>ऐसे सभी विकल्प खोजने के लिए , जिसमें :has()चयनकर्ता का उपयोग करें :

$('select:has(option:contains(abc))')

3
:containsक्या अब यह निश्चित नहीं है?
हरि पचुवेतिल

वास्तव में क्या समस्या है?
ओगियर स्केल्विस 8

आप केवल चयनित विकल्पों के साथ ऐसा कैसे करेंगे?
toddmo

क्या यह भी एक विकल्प नहीं है 123abcdef?
टेपेइमम

@Teepeemm हाँ, यह दो शीर्ष उत्तरों के बीच का अंतर है। शीर्ष केवल चेक केवल विशिष्ट पाठ के साथ विकल्प लौटाता है, यह उस विकल्प को वापस करता है जिसमें सम्‍मिलित है, लेकिन केवल वह विशिष्ट पाठ नहीं है। जो, संयोग से, वह है जो मुझे वास्तव में इस समय की आवश्यकता है, इसलिए मुझे बहुत खुशी है कि मैंने इसे पोस्ट किया है।
ली।

30

पिछले सुझावों में से किसी ने भी मेरे लिए jQuery 1.7.2 में काम नहीं किया क्योंकि मैं एक टेक्स्टबॉक्स से मूल्य के आधार पर सूची के चयनित सूचकांक को सेट करने की कोशिश कर रहा हूं, और कुछ पाठ मान कई विकल्पों में निहित हैं। मैंने निम्नलिखित का उपयोग करके समाप्त किया:

$('#mySelect option:contains(' + value + ')').each(function(){
    if ($(this).text() == value) {
        $(this).attr('selected', 'selected');
        return false;
    }
    return true;
});

1
मुझे लगता है कि यह सबसे अच्छा जवाब है क्योंकि यह वास्तव में सही परिणाम देता है। लेकिन मैं मदद नहीं कर सकता, लेकिन लगता है कि containsपूरी तरह से छोड़ देना वास्तव में चीजों को गति दे सकता है।
स्टाइलिफ़ नोवे

यह मेरे लिए काम करता है, लेकिन मेरे परिदृश्य में मैं कई बार ग्रिड पर एडिट पर क्लिक कर सकता हूं, इसलिए जब कोई मैच नहीं था तो चुने हुए एट्रिब्यूट को हटाना होगा अन्यथा जो पहला ऑप्शन चुना गया था वह बाद के एडिट के लिए रहेगा। और {$ (यह) .attr ('चयनित', ''); विवरण झूठा है; }
esp

इस समाधान ने मेरे लिए काम किया, लेकिन विकल्प विशेषता सेट करने के बजाय, वास्तव में मेरे द्वारा आवश्यक चयन मेनू को बदलने के लिए: $(this).parent().val($(this).val()); आप शायद दोनों कर सकते थे, लेकिन मेरे लिए केवल माता-पिता val()की चाल की सेटिंग थी।
२०:०२ पर बिलीओनाह


15

यह मेरे लिए काम किया: $("#test").find("option:contains('abc')");


3
आपको एक स्पष्टीकरण जोड़ना चाहिए कि यह क्यों काम कर रहा है।
हेंस जोहानसन

@HannesJohansson या उन्हें कम से कम यह बताना चाहिए कि यह किस तरह से अलग है या एसएलएसी के जवाब में कुछ नया जोड़ता है जो लगभग पाँच साल पुराना है। ; ^)
रफिन

4
सुनिश्चित करें कि आप महसूस करते हैं कि यह विकल्प भी मिलेगा: <विकल्प> abcd </ विकल्प>।
चार्ल्स

धन्यवाद यह निश्चित रूप से सही है और जो कुछ छूट गया है वह सभी को जोड़ रहा है .attr ('मूल्य'); अंत की ओर। यह वास्तव में एक गतिशील तरीके से उपयोग करने का सबसे आसान तरीका है! इसलिए पूरा कोड इस तरह होना चाहिए। $("#testselect").find("option:contains('option-text')").attr('value'); इस तरह आप .click()किसी सेटिंग को बदलने के लिए किसी ईवेंट का उपयोग कर सकते हैं ।
क्रिसकैग

12

ड्रॉपडेललिस्ट में चुनिंदा पाठ के लिए यह सबसे अच्छी विधि है।

$("#dropdownid option:contains(your selected text)").attr('selected', true);

3
इसी तरह के जवाब के साथ, यह एक विकल्प के साथ मिल जाएगा this is your selected text plus more
टेपेइमम

4

जब तक मुझे फ़ायरफ़ॉक्स और IE दोनों में काम करने के लिए एक नहीं मिला, मैंने इनमें से कुछ चीजों की कोशिश की। मैंने ये ढूंढ निकाला।

$("#my-Select").val($("#my-Select" + " option").filter(function() { return this.text == myText }).val());

एक और पठनीय fasion में इसे लिखने का एक और तरीका:

var valofText = $("#my-Select" + " option").filter(function() {
    return this.text == myText
}).val();
$(ElementID).val(valofText);

स्यूडोकोड:

$("#my-Select").val( getValOfText( myText ) );

JQuery के नवीनतम संस्करणों के साथ समझ में आता है
Fr0zenFyr

किस बात का "#my-Select" + " option"? सिर्फ क्यों नहीं "#my-Select option"?
टेपेइमम

3

निम्नलिखित का उपयोग करें

$('#select option:contains(ABC)').val();

1
आपके द्वारा प्रदान किया गया कोड समस्या को हल कर सकता है, लेकिन कृपया संक्षिप्त विवरण जोड़ें कि यह समस्या को कैसे हल करता है। स्टैक ओवरफ्लो में आपका स्वागत है, पढ़ने की सिफारिश की कि कैसे उत्तर दें
दान ब्यूलियू

3
अगर कुछ विकल्प हैं: ABC, ABCD, ABCDEF, तो?
Hungvv

1

यह jQuery 1.6 (ओपन ब्रैकेट से पहले कोलन नोट) में काम करेगा, लेकिन नए रिलीज (समय पर 1.10) पर विफल रहता है।

$('#mySelect option:[text=abc]")

5
दिलचस्प है, लेकिन दुर्भाग्य से यह काम करने के लिए नहीं लगता है (jQuery 1.10.2)।
WynandB

आप यह शामिल करना चाहेंगे कि कुछ ऐसा $("#mySelect option").filter(function() { return this.text == "abc"; });होगा जो jQuery के नवीनतम संस्करणों के साथ काम करेगा .. या शायद कुछ अन्य तरीके जो आप उपयोग करना पसंद करते हैं ..
Fr0zenFyr

1

नीचे दिए गए jquery संस्करण 1.10.2 के लिए मेरे लिए काम किया

  var selectedText="YourMatchText";
    $('#YourDropdownId option').map(function () {
       if ($(this).text() == selectedText) return this;
      }).attr('selected', 'selected');
    });


0

यह मेरे लिए काम करता है:

var result = $('#SubjectID option')
            .filter(function () 
             { return $(this).html() == "English"; }).val();

resultचर मिलान वाला पाठ मूल्य के सूचकांक वापस आ जाएगी। अब मैं इसे इंडेक्स का उपयोग करके इसे सेट करूंगा:

$('#SubjectID').val(result);

-1

या तो आप विकल्पों के माध्यम से पुनरावृत्ति करते हैं, या विकल्प की एक और विशेषता के अंदर एक ही पाठ डालते हैं और उसी के साथ चयन करते हैं।


-1

यह भी चलेगा।

$ ('# परीक्षण')। खोजें ("चयन विकल्प: इसमें ('बी')") शामिल हैं। फ़िल्टर (": चयनित");


2
यह विकल्प को भी पकड़ लेगा ABC
14 सितंबर को टेपेमम

-1

जैसा कि इस उत्तर में वर्णित है , आप हैक्सटेक्स के लिए आसानी से अपना चयनकर्ता बना सकते हैं। इससे आप विकल्प ढूंढ सकते हैं$('#test').find('option:hastText("B")').val();

यहाँ hasText विधि मैंने जोड़ा है:

 if( ! $.expr[':']['hasText'] ) {
     $.expr[':']['hasText'] = function( node, index, props ) {
       var retVal = false;
       // Verify single text child node with matching text
       if( node.nodeType == 1 && node.childNodes.length == 1 ) {
         var childNode = node.childNodes[0];
         retVal = childNode.nodeType == 3 && childNode.nodeValue === props[3];
       }
       return retVal;
     };
  }

-2

यह मेरे लिए काम करता है

var options = $(dropdown).find('option');
var targetOption = $(options).filter(
function () { return $(this).html() == value; });

console.log($(targetOption).val());

सभी पोस्ट के लिए धन्यवाद।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.