jQuery属性选择器匹配一个或多个

问题描述 投票:0回答:1

我具有与一个或多个属性值匹配的选择器:

var item = $(this).closest('.foo[data-category*="'+category+'"]')

这很好。 (类别是一个或多个逗号分隔的单词)

现在我正在尝试像这样使用它:

if(item.attr('data-category*="'+category+'"')){ }

但不起作用。

我虽然可以尝试:

if(item.attr('data-category').split(',').indexOf(category) > -1){ }

但是如果我的某些商品没有data-category属性,这将引发错误。

jquery custom-data-attribute
1个回答
0
投票

jquery.attr不是选择器匹配器,但仅返回具有该名称的项目属性。这就是问题。要检查项目的属性是否与逗号分隔的值列表之一匹配,请执行以下操作(假设项目首先具有属性data-category):

if ( -1 !==(','+item.attr('data-category')+',').indexOf(','+category+',') ) {
     // matches
 }
© www.soinside.com 2019 - 2024. All rights reserved.