【问题标题】:How can I check whether a option already exist in select by JQuery如何检查 JQuery 选择中是否已存在选项
【发布时间】:2010-10-13 09:03:45
【问题描述】:

如何通过 JQuery 检查 select 中是否已存在选项?

我想动态地将选项添加到select中,所以我需要检查该选项是否已经存在以防止重复。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    如果它已经存在,则计算结果为 true:

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

    【讨论】:

    • 升级到 Jquery 1.6 +,将 yourValue 括在引号中
    • 是的。报价非常重要。
    • 在 jquery 1.7.1 中为我工作,无需将 yourValue 括在引号中
    • 如何在上述方案中实现忽略大小写或toLowerCase?这是否需要 $.each 作为下拉列表?
    • 如果我们想实现区分大小写的匹配,那么我们需要做什么?使用简单的 $.each 函数?
    【解决方案2】:

    另一种使用jQuery的方式:

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

    【讨论】:

    • -1 你基本上是在自己做循环,而不是让 jQuery 像所有其他答案一样做。虽然这可行,但它是在重新发明轮子。
    • 不确定它是否值得 -1。这明确地显示了该过程,这对初学者可能有好处。当然不是最好的答案,但它是一个有效的答案。
    • 还有一些喜欢手动的方法,比如我。这也结合了在其中添加布尔值的步骤,而不是像另一个那样产生 0 或 1 并且必须对其进行转换。我说这两种方法都很好,因为无论哪种方式,您都必须执行 2 个步骤。对我来说,这对流程来说似乎更明显,并且通过不判断空格的长度不太容易出错,例如,.length 可能会这样做。
    • 这些加一个,你也不必担心yourValue中的字符
    • 如果您不知道“yourValue”是什么(例如,如果它是用户输入),那么这个和 alnort29 的答案实际上是检查现有值的最佳方法。仅仅为了让“jQuery 做”而构建一个字符串需要您进行输入清理,并且您最终会得到困扰 SQL 数十年的代码实践。所以 -1 是完全没有根据的。该问题甚至表明他们想要“动态地”插入值。不要动态地将你的字符串拼凑在一起。你也不会'从密码=“'+字符串+'”'的用户中选择1,对吗?
    【解决方案3】:
    if ( $("#your_select_id option[value=<enter_value_here>]").length == 0 ){
      alert("option doesn't exist!");
    }
    

    【讨论】:

    • 您缺少右括号“option[value=]”
    【解决方案4】:
    var exists = $("#yourSelect option")
                   .filter(function (i, o) { return o.value === yourValue; })
                   .length > 0;
    

    这具有自动为您转义值的优点,这使得文本中的随机引号更容易处理。

    【讨论】:

      【解决方案5】:

      虽然大多数其他答案对我有用,但我使用了 .find():

      if ($("#yourSelect").find('option[value="value"]').length === 0){
          ...
      }
      

      【讨论】:

        【解决方案6】:

        不起作用,你必须这样做:

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

        【讨论】:

          【解决方案7】:

          这对我有帮助:

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

          【讨论】:

            【解决方案8】:

            我遇到了类似的问题。而不是每次通过选择控件的循环运行 dom 搜索,我将 jquery 选择元素保存在一个变量中并这样做:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-03-17
              • 1970-01-01
              • 1970-01-01
              • 2017-06-11
              • 2012-04-05
              • 1970-01-01
              • 2011-01-24
              相关资源
              最近更新 更多