jQuery 过滤器,检查所有复选框值

标签 jquery filter

在另一个问题中 @Deadpool 的帮助下,我设法组合了一种根据复选框值过滤 div 结果的方法。

HTML

            <div id="search_section">

                <h3>Candidate Experience</h3>

                <div class="search_box_exp">
                    <input type="checkbox" name="3year" value="3yearexp"> 3+ Years <br>
                    <input type="checkbox" name="5year" value="5yearexp"> 5+ Years <br>
                    <input type="checkbox" name="7year" value="7yearexp"> 7+ Years <br>
                    <input type="checkbox" name="10year" value="10yearexp"> 10+ Years <br>
                </div>

                <h3><br>Candidate Salary</h3>

                <div class="search_box_sal">
                    <input type="checkbox" name="3039" value="s29"> less than £29,999<br>
                    <input type="checkbox" name="3039" value="s3039"> £30,000 - £39,999 <br>
                    <input type="checkbox" name="4059" value="s4059"> £40,000 - £59,999 <br>
                    <input type="checkbox" name="6079" value="s6079"> £60,000 - £79,999 <br>
                    <input type="checkbox" name="80plus" value="s80plus"> £80,000 + <br>
                </div>
            </div>


<br>
<br>
<div style="display: block;" class="talent_result_wrapper" data-experience="5yearexp" data-salary="s29">
      <div class="talent_result_header">
        <span class="talent_result_head">ID: </span>100006
      </div>
        <ul>
          <li><strong>Resides:  </strong>Redditch</li>
          <li><strong>Salary Required:  </strong>£29000</li>
          <li><strong>Experience:  </strong>2 Years </li>
          <li><strong>Industy:  </strong>10</li>
          <li><strong>Specialism:  </strong>10</li>
      </ul></div>
<br>
<br>
<div style="display: block;" class="talent_result_wrapper" data-experience="10yearexp" data-salary="s6079">
      <div class="talent_result_header">
        <span class="talent_result_head">ID: </span>100007
      </div>
        <ul>
          <li><strong>Resides:  </strong>London</li>
          <li><strong>Salary Required:  </strong>£67000</li>
          <li><strong>Experience:  </strong>4 Years </li>
          <li><strong>Industy:  </strong>24</li>
          <li><strong>Specialism:  </strong>24</li>
      </ul></div>   

JQUERY

$(".search_box_exp input[type=checkbox]").click( function(e){
    if($(this).val().length == 0){
        $(".talent_result_wrapper").show();
    } else {
        $(".talent_result_wrapper").hide();
        $("div[data-experience='" + $(this).val() + "']").show();
    }

    var n = $( "input:checked" ).length;
    if(n === 0){
        $(".talent_result_wrapper").show();
    }

});

$(function () {
  $(".search_box_sal input[type=checkbox]").click( function(e){
                if($(this).val().length == 0){
                $(".talent_result_wrapper").show();
                    } else {
                        $(".talent_result_wrapper").hide();
                        $("div[data-salary='" + $(this).val() + "']").show();
                    }

            var n = $( "input:checked" ).length;
            if(n === 0){
            $(".talent_result_wrapper").show();
            }
    })
});

我有这个 fiddle 来展示它的实际效果:http://jsfiddle.net/MCam435/qnvxK/4/

我现在想做的是让它查看多个复选框值,例如,如果我单击 5 年和 10 年,它应该显示两个 div。与薪资类似,所以应该看经验和薪资领域。目前它只查看最后一个复选框。

最佳答案

我能想到的最简单的方法是:

// finding all inputs of type="checkbox" within the '#search_section' element,
// binding a function to the 'change' event
$('#search_section input[type="checkbox"]').change(function(e){

    // caching the 'this' node (since we're using it more than once):
    var self = this;

    // finding all div elements with a 'data-experience' attribute that's
    // equal to the value of the un/checked checkbox
    // showing/hiding that/those element(s) depending on whether checkbox
    // is checked or not
    $('div[data-experience="' + self.value + '"]').toggle(self.checked);

// triggering the change event to show/hide the relevant div elements
// based on the initial state of the checkboxes
}).change();

JS Fiddle demo .

引用文献:

关于jQuery 过滤器,检查所有复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18742173/

相关文章:

angular - 带有 angular2 : how to add filter for columns in p-headerColumnGroup tag 的 PrimeNG

Android SQLite 数据库从查询中删除重复项

javascript - 如何向 Mapbox 传单 map 添加多个过滤器

javascript - 在 <pre> 标签中获取选定的文本和文本索引,其中偏移量是 pre 的开始

jquery - 如何使搜索工具栏中的 html5 日期字段尊重列宽

javascript - 如何使用 jquery/javascript 验证表单?

regex - 从 Google 表格上的文本中提取特定数字?

javascript - 使用 jQuery 过滤类别

javascript - Mobile Safari、jQuery 和绑定(bind)到 future 的 DOM 元素

javascript - jQuery 添加缓动会破坏后面的动画。语法错误?