[jquery] JQuery에서 select에 옵션이 이미 있는지 확인하는 방법

JQuery에서 select에 옵션이 이미 존재하는지 어떻게 확인할 수 있습니까?

동적으로 옵션을 선택에 추가하고 싶으므로 복제를 방지하기 위해 옵션이 이미 존재하는지 확인해야합니다.



답변

이미 존재하는 경우 true로 평가됩니다.

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


답변

jQuery를 사용하는 다른 방법 :

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


답변

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


답변

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

이는 자동으로 값을 이스케이프 처리하여 텍스트에서 임의의 따옴표를 다루기가 훨씬 쉽습니다.


답변

작동하지 않으면 다음을 수행해야합니다.

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


답변

그것은 나를 도와줍니다 :

  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");
                         }
  });


답변

나는 비슷한 문제가 있었다. select 컨트롤에 대한 루프가 jquery select 요소를 변수에 저장하고 매번 dom을 통해 검색을 실행하는 대신 다음을 수행했습니다.

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