多个attr jquery

时间:2014-11-18 15:21:22

标签: javascript php jquery wordpress

我想给用户一个选项,这样他就可以编写ID个将在特定页面上显示的wordpress类别。

wordpress字段将被命名为the_field('categories_id'),因此如果他输入的ID与逗号分隔的84, 95, 10。然后显示所有这些。

我只使用了一个id,例如,如果页面body.term-espectaculos显示.filter li data-filter=".filter-84"

使用此代码可以正常工作:

if(jQuery('body').hasClass('term-espectaculos')){
    if(jQuery('.filters li').attr('data-filter=".filter-84"') !== undefined ){
        jQuery(this).fadeIn()
    }
}

问题是用户必须能够添加多个ID,所以它不会像这个例子中那样只是一个。我该怎么办?

谢谢!

2 个答案:

答案 0 :(得分:2)

通过data-filter

将json编码数组添加到jQuery('.filters li').data('filter', jsonEncodedArray);

编辑:在php中你可以像这样编码成一个json数组:

$array = array(84,95,10);
echo json_encode($array);

在javascript中:

var array = [84,95,10];
var jsonEncodedArray = JSON.stringify(array);

答案 1 :(得分:1)

如果我理解正确,您只想淡入逗号分隔列表中具有data-filter属性的列表项:

var values = '84, 95, 10',
    valArr = values.split(', ');
if(jQuery('body').hasClass('term-espectaculos')){
    jQuery('.filters li').filter(function(){
        var thisFilter = ($(this).attr('data-filter') || '').replace('.filter-','');
        return $.inArray(thisFilter, valArr) > -1;
    }).fadeIn();
}

JSFiddle

请注意,这要求您的字符串形式的值精确地用逗号和空格分隔。您可能只想分割逗号,然后修剪数组值:

var values = '84, 95, 10',
    valArr = $.map(values.split(','), function(v){ return $.trim(v); });