【问题标题】:jQuery filter dropdownjQuery 过滤器下拉菜单
【发布时间】:2009-06-03 17:41:08
【问题描述】:

好的,我有一个国家下拉列表,只想显示美国和加拿大

我正在看类似的东西,但不认为我这样做是对的

// Filter Countries
$('#selectId').filter(function() {
   return $('#option').val() == ('USA' || 'CANADA');   
});

示例 HTML:

<select id="country">
  <option value="AFG">Afghanistan</option>
  <option value="ALB">Albania</option>
  <option value="ALG">Algeria</option>
  <option value="CANADA">Canada</option>
  <option value="USA">United States</option>
</select>

【问题讨论】:

    标签: jquery filter


    【解决方案1】:

    ||您拥有的构造无效。试试这个。

    $(this).val() == 'USA' || $(this).val() == 'CANADA';  
    

    要删除不匹配的选项,您可以执行以下操作。

    $().ready( function () {
      $('#country option').filter(function() {             
         return !($(this).val() == 'USA' || $(this).val() == 'CANADA');   
      }).remove();
    });    
    

    【讨论】:

    • hide() 方法似乎不适用于我的测试中的选项元素。运行您的代码对我不起作用。您可能需要仔细检查。
    • 谢谢,加布里埃尔。我发布的第一个解决方案只是隐藏了不匹配的选项。这适用于 FireFox,但我不确定是否适用于其他任何地方。更新了代码,使其实际上删除了不匹配的选项。
    【解决方案2】:

    或者,如果您的列表中有很多要过滤的项目,或者您想更改要过滤的项目,请使用:

    // define this anywhere
    Array.prototype.inArray = function (value) {
        var i;
        for (i=0; i < this.length; i++) {
            if (this[i] === value) {
                return true;
            }
        }
        return false;
    };
    
    // your choice on how to provide this list, I'm using
    // something simple as an example
    var want = ['USA', 'CANADA'];
    
    // now, somewhere, this filter happens
    $('#selectId').filter(function() {
       return want.inArray($('#option').val());   
    });
    

    【讨论】:

      【解决方案3】:

      那里有几个问题......你需要使用正确的选择器#country,过滤器只返回对象,它实际上并不作用于它们......那里的复合OR语法在JS中不起作用......

      这可行(已测试):

      $('#country').children().each(function() {
         if ($(this).val() != 'USA' && $(this).val() != 'CANADA') $(this).remove();   
      });
      

      您必须使用 remove() 方法,因为 hide() 对选项元素不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-22
        • 2023-03-11
        • 2012-12-05
        • 2018-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多