মানটি JQuery এর সাথে নির্বাচিত তালিকায় রয়েছে কিনা তা পরীক্ষা করুন


112

আমি কীভাবে JQuery ব্যবহার করে চেক করব যে কোনও মান ড্রপডাউন তালিকার সাথে সম্পর্কিত কিনা?

উত্তর:


180

অ্যাট্রিবিউট ইক্যুয়াল সিলেক্টর ব্যবহার করুন

var thevalue = 'foo';
var exists = 0 != $('#select-box option[value='+thevalue+']').length;

যদি বিকল্পটির মান জাভাস্ক্রিপ্টের মাধ্যমে সেট করা থাকে তবে এটি কার্যকর হবে না। এই ক্ষেত্রে আমরা নিম্নলিখিতগুলি করতে পারি:

var exists = false;
$('#select-box option').each(function(){
    if (this.value == 'bar') {
        exists = true;
        return false;
    }
});

8
সুস্পষ্ট দ্বিতীয় পদ্ধতিটি আরও নিরাপদ কারণ এটি ]এবং and \ ` সহ যে কোনও অক্ষর সমন্বিত বিকল্পের মানকে অনুমতি দেয়` সঠিক সিএসএস-এস্কেপিং না করে কাঁচা পাঠ্য থেকে নির্বাচক স্ট্রিংগুলি তৈরি করা এড়িয়ে চলুন।
ববিনস


14
প্রত্যাবর্তন মিথ্যা ভাঙ্গা / শেষ করতে ব্যবহৃত হয়। লুপ লুপ।
এঞ্জেল

আপনি যদি এই যুক্তিটি ব্যবহার করে জাভাস্ক্রিপ্ট দ্বারা নতুন বিকল্পগুলি তৈরি করেন: $ ('# নির্বাচন-বাক্স') app সংযোজন ; (বা অবশ্যই আরও আলোচনামূলক স্টাইলে), প্রথম উদাহরণটি কাজ করবে (আপনাকে পুনরাবৃত্তি করার দরকার নেই)।
লুকাস জিলেনেক

1
প্রথম কোড স্নিপেট কাজ না করে এমন কোনও মামলা আমি খুঁজে পাচ্ছি বলে মনে হচ্ছে না। আমি উভয়ই একটি নতুন বিকল্প সংযোজন এবং jQuery এর ভাল () ফাংশন সহ একটি বিদ্যমান বিকল্পের মান সেট করার চেষ্টা করেছি। উভয় ক্ষেত্রেই, প্রথম কোড স্নিপেট এখনও কাজ করেছিল। কোন ক্ষেত্রে এটি ব্যর্থ হবে?
ডালিন

17

কেবলমাত্র আপনি (বা অন্য কেউ) jQuery ছাড়াই এটি করতে আগ্রহী হতে পারেন:

var exists = false;
for(var i = 0, opts = document.getElementById('select-box').options; i < opts.length; ++i)
   if( opts[i].value === 'bar' )
   {
      exists = true; 
      break;
   }

কেন শুধু আমি ++ নেই?
সিএসআর-ননটল

++ আমি উপসর্গ সর্বদা দ্রুত হয় তবে পোস্টিক্স @ সিএসআর-নন্টল
অলোক

11

এখানে অন্য একই বিকল্প। আমার ক্ষেত্রে, আমি একটি নির্বাচনী তালিকা তৈরি করার সাথে সাথে আমি অন্য বাক্সে মানগুলি পরীক্ষা করছি। আমি তুলনা করতে হবে যখন আমি অপরিজ্ঞাত মান মধ্যে চালিয়ে যাচ্ছি, তাই আমি আমার চেক এইভাবে সেট করে:

if ( $("#select-box option[value='" + thevalue + "']").val() === undefined) { //do stuff }

এই পদ্ধতিটি আরও ব্যয়বহুল হলে আমার কোনও ধারণা নেই।


8

ফিল্টার ব্যবহার করবেন না কেন?

var thevalue = 'foo';    
var exists = $('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length;

আলগা তুলনাগুলি কাজ করে কারণ বিদ্যমান> 0 সত্য, বিদ্যমান == 0 মিথ্যা, সুতরাং আপনি কেবল ব্যবহার করতে পারেন

if(exists){
    // it is in the dropdown
}

বা এটি একত্রিত করুন:

if($('#select-box option').filter(function(){ return $(this).val() == thevalue; }).length){
    // found
}

বা যেখানে প্রতিটি নির্বাচিত ড্রপডাউন-তে নির্বাচন-বাক্স শ্রেণীর শ্রেণি রয়েছে এটি আপনাকে নির্বাচিত (গুলি) এর একটি jquery অবজেক্ট দেবে যার মধ্যে মান রয়েছে:

var matched = $('.select-boxes option').filter(function(){ return $(this).val() == thevalue; }).parent();

এটি ইমো সবচেয়ে স্বজ্ঞাত উপায়।
সাইমন


1

আমি জানি এটি একটি পুরানো প্রশ্নের ধরণ যা এর দ্বারা আরও ভাল কাজ করে।

if(!$('.dropdownName[data-dropdown="' + data["item"][i]["name"] + '"] option[value="'+data['item'][i]['id']+'"]')[0]){
  //Doesn't exist, so it isn't a repeat value being added. Go ahead and append.
  $('.dropdownName[data-dropdown="' + data["item"][i]["name"] + '"]').append(option);
}

আপনি যেমন এই উদাহরণটিতে দেখতে পাচ্ছেন, আমি অনন্য ট্যাগ ডেটা-ড্রপডাউন নাম এবং নির্বাচিত বিকল্পের মান দ্বারা অনুসন্ধান করছি। অবশ্যই এগুলি কাজ করার জন্য আপনার এগুলির দরকার নেই তবে আমি সেগুলি অন্তর্ভুক্ত করেছি যাতে অন্যরা দেখতে পারে যে আপনি বহু মান ইত্যাদি আবিষ্কার করতে পারেন could

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.