मैं कैसे जांच सकता हूं कि क्या JQuery द्वारा पहले से ही कोई विकल्प मौजूद है


169

मैं कैसे जांच सकता हूं कि क्या JQuery द्वारा पहले से ही एक विकल्प मौजूद है?

मैं चयन में गतिशील रूप से विकल्प जोड़ना चाहता हूं और इसलिए मुझे यह जांचने की आवश्यकता है कि क्या नकल रोकने के लिए विकल्प पहले से मौजूद है।

जवाबों:


333

यह सत्य का मूल्यांकन करता है यदि यह पहले से मौजूद है:

$("#yourSelect option[value='yourValue']").length > 0;

5
जेकरी 1.6 + में अपग्रेड करते हुए, उद्धरणों में अपने विल्लु को संलग्न करें
बॉब

1
हां। उद्धरण बहुत महत्वपूर्ण हैं।
bobetko

2
मेरे लिए काम करता है jquery में 1.7.1 उद्धरणों में अपने विडियो को संलग्न किए बिना 1.7.1
मैथियस एफ

उपरोक्त समाधान में मामले को कैसे अनदेखा किया जा सकता है या टोलकॉकर को लागू किया जा सकता है? क्या यह ड्रॉप डाउन सूची के लिए $ .each की आवश्यकता होगी?
बेन सीयर्ड्स

1
अगर हम केस संवेदी मिलान को लागू करना चाहते हैं तो हमें क्या करना होगा? सरल $ .each फ़ंक्शन का उपयोग करें?
चौधरी वकास

21

JQuery का उपयोग करने का दूसरा तरीका:

var exists = false; 
$('#yourSelect  option').each(function(){
  if (this.value == yourValue) {
    exists = true;
  }
});

6
-1 - आप मूल रूप से jQuery को सभी अन्य उत्तरों की तरह करने देने के बजाय स्वयं लूप कर रहे हैं। हालांकि यह काम करेगा, यह पहिया का फिर से आविष्कार कर रहा है।
पीटर

14
यह सुनिश्चित नहीं है कि यह -1 योग्य है। यह स्पष्ट रूप से प्रक्रिया को दर्शाता है, जो शुरुआती लोगों के लिए अच्छा हो सकता है। निश्चित रूप से सबसे अच्छा जवाब नहीं है, लेकिन यह एक वैध है।
रोज़बेरटिंगर

1
और कुछ मेरी तरह मैनुअल दृष्टिकोण। यह बूलियन को वहां जोड़ने के चरण को भी जोड़ती है, बजाय 0 या 1 के उत्पादन की तरह दूसरे को करता है और इसे परिवर्तित करने के लिए। मैं कहता हूं कि दोनों दृष्टिकोण ठीक हैं क्योंकि आपको 2 चरण करने होंगे। ऐसा लगता है कि यह प्रक्रिया मुझे और अधिक दिखाई दे रही है, और व्हॉट्सएप की लंबाई को न देखते हुए त्रुटि की संभावना कम है, उदाहरण के लिए, जैसे .lengthहो सकता है।
वाप्गुगी

3
इसके अलावा इनमें से एक के लिए, आपको अपने पात्रों के लिए चिंता करने की आवश्यकता नहीं है
Fabio C.

1
यह और alnort29 का उत्तर वास्तव में मौजूदा मूल्य की जांच करने का सबसे अच्छा तरीका है, अगर आपको नहीं पता कि "yourValue" क्या है (उदाहरण के लिए, यदि यह उपयोगकर्ता इनपुट है)। एक एकल स्ट्रिंग का निर्माण करने के लिए बस "jQuery करते हैं" आपको इनपुट सैनिटाइजेशन करने की आवश्यकता होगी, और आप उन कोड प्रथाओं के साथ समाप्त होते हैं जो दशकों से SQL को प्रेतवाधित करते हैं। तो एक -1 पूरी तरह से अनुचित है। यहां तक ​​कि सवाल यह भी है कि वे "गतिशील" मूल्यों को सम्मिलित करना चाहते हैं। अपने स्ट्रिंग को गतिशील रूप से एक साथ पैच न करें। आप उन उपयोगकर्ताओं से भी 'सेलेक्ट 1' न करें जहां पासवर्ड = "+ स्ट्रिंग + '" "है, क्या आप?
आआअ

20
if ( $("#your_select_id option[value=<enter_value_here>]").length == 0 ){
  alert("option doesn't exist!");
}

2
आपको एक समापन कोष्ठक "विकल्प [मूल्य = <enter_value_here>]"
KB

17
var exists = $("#yourSelect option")
               .filter(function (i, o) { return o.value === yourValue; })
               .length > 0;

इससे आपके लिए स्वचालित रूप से मूल्य से बचने का लाभ होता है, जो पाठ में यादृच्छिक उद्धरण से निपटने के लिए बहुत आसान बनाता है।


2

काम नहीं करता है, आपको यह करना होगा:

if ( $("#your_select_id option[value='enter_value_here']").length == 0 ){
  alert("option doesn't exist!");
}

1

यह मेरी मदद कर रहा है:

  var key = 'Hallo';

   if ( $("#chosen_b option[value='"+key+"']").length == 0 ){
   alert("option not exist!");

    $('#chosen_b').append("<option value='"+key+"'>"+key+"</option>");
    $('#chosen_b').val(key);
   $('#chosen_b').trigger("chosen:updated");
                         }
  });

0

मेरा मुद्दा भी ऐसा ही था। हर बार डोम के माध्यम से खोज को चलाने के बजाय, हालांकि नियंत्रण के लिए लूप मैंने एक चर में जक्वेरी चयन तत्व को बचाया और किया:

function isValueInSelect($select, data_value){
    return $($select).children('option').map(function(index, opt){
        return opt.value;
    }).get().includes(data_value);
}

0

हालाँकि अधिकांश अन्य उत्तरों ने मेरे लिए काम किया। मैंने (।):

if ($("#yourSelect").find('option[value="value"]').length === 0){
    ...
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.