如果对象类不包含值,jquery 隐藏对象

标签 jquery class hide selected

标题可能有点令人困惑,基本上我正在尝试编写一个脚本,该脚本将从下拉表单中获取选定的值,并隐藏 li 的类(如果其类不包含下拉表单中的值)。 .如果这有道理的话?每个li有多个类..

这是我到目前为止所得到的(抱歉,如果它很粗糙):

表格:

<form action="" name="filter" id="filter" method="post">
        <select name="bedrooms">
          <option value="">- Select Bedrooms -</option>
          <option value="bed-1">1</option>
          <option value="bed-2">2</option>
          <option value="bed-3">3</option>
          <option value="bed-4">4</option>
          <option value="bed-5">5</option>
        </select>
        <select name="bathrooms">
          <option value="">- Select Bathrooms -</option>
          <option value="bath-1">1</option>
          <option value="bath-2">2</option>
          <option value="bath-3">3</option>
          <option value="bath-4">4</option>
          <option value="bath-5">5</option>
        </select>
        <select name="frontage">
          <option value="">- Select Frontage Size -</option>
          <option value="frontage-100">100</option>
          <option value="frontage-200">200</option>
          <option value="frontage-300">300</option>
          <option value="frontage-400">400</option>
          <option value="frontage-500">500</option>
        </select>
        <input type="submit" name="filter-submit" id="filter-submit" value="Go" />
      </form>

JQuery:

$("#filter-submit").click(function() {

          var foo = [];
          $("#filter :selected").each(function(i, value){
            foo[i] = $(value).val();
          });
          if (foo) {
            $.each(foo, function(index, value){
              if (value) {
                //hide other objects based on "value"
                //$("#portfolio li").hasClass();
            };
            });
          };

        return false;
        });

好吧,我陷入困境的是如何隐藏所有没有输出为“值”的类的“#portfolio li”。我想我可以使用 hasClass 但不知道如何扭转它..如果这有意义吗?任何帮助将不胜感激:)

最佳答案

您可以使用.not()并通过该类(class),如下所示:

$("#filter-submit").click(function() {
  var lis = $("#portfolio li");          //get all of the <li> elements
  $("#filter select").each(function() {  //loop through selected classes
    var val = $(this).val();             //get selected value, could be blank
    if(val) lis = lis.not('.' + val);    //get only <li>s without the class
  });
  lis.hide();                            //hide the ones without all classes
  return false;                          //prevent default behavior
});

关于如果对象类不包含值,jquery 隐藏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605478/

相关文章:

jquery UI 对话框滚动跟随?

javascript - jQuery 发布类似问题

swift - 初始化发生在哪里,是在 init 方法中还是在实例声明中?

javascript - JQuery 触发更改甚至组合框的选定值在页面加载时检查

javascript - 如何从表的outerHTML 值创建列表对象?

javascript - jQuery 遍历列表项并获取 data-imgid 属性值

python - 包装python父类(super class)的所有方法

c++ - 类数据成员不可访问

如果 td 没有文本,jquery 隐藏表格行

qt - Qt中setVisible、setShown和show/hide之间有什么区别