客户端使用jquery进行过滤

时间:2014-11-21 14:24:13

标签: jquery wordpress filtering

所以这个不起作用的小提琴http://jsfiddle.net/1auhde3L/是基于这个小提琴http://jsfiddle.net/B9Hnu/125/确实有效,但它没有考虑我的html是如何使用数据类别和复选框的rel或ID标签中的标签。

这是jquery ......

$(function() {

var $checkboxes = $("input[id^='type-']");
$('input[type=checkbox]:checked').attr('checked', false);

$checkboxes.change(function() {
    console.log($('input[type=checkbox]:checked').length);
    if( $('input[type=checkbox]:checked'
         ).length>0)
{
    var selector = '';
    $checkboxes.filter(':checked').each(function() { // checked 
        //selector += '.' + this.id.replace('type-', '') + ', ';
        selector += "[data-category~='" + element.id + "']";                  
        // builds a selector like '.A, .B, .C, ' 
    });
    selector = selector.substring(0, selector.length - 2); // remove trailing ', '
    $('.results > div').hide() // hide all rows
    .filter(selector).show(); // reduce set to matched and show
}else

{
 $('.results > div').show()    
}
 });

});

1 个答案:

答案 0 :(得分:2)

我相信这就是你looking for

您的代码中存在一些问题:

  1. 您正在寻找$("input[id^='type-']");,但问题是您的身份证明不是以"类型开始 - "
  2. 我修改了您的代码以添加第二个选择器,否则您将不会显示元素,因为选中复选框的顺序。例如 - 如果您单击电子邮件然后进行品牌化 - 您的选择器将具有字符串电子邮件品牌,并且不会选择具有"品牌电子邮件"的数据类别的div。您可能想要考虑的另一种方法是创建一个数组并使用它来过滤。
  3. 快乐的编码!

    更新


    updated使用数组而不是字符串的代码。这将允许您根据各个字符串进行过滤。它还消除了单击复选框的顺序,并消除了对两个选择器字符串的需求。