说我有一个号码,3
。
我正在寻找一种方法来确定给定的一组jQuery对象是否在其属性中包含数字3。此属性通常是包含国家/地区ID的csv。可以包含一个数字,可以包含多个。
示例标记:
<li data-regions="3,52,30">
<a data-href="/explore/barbados/people/some-person">Some Person</a>
</li>
理想情况下,我能够确定给定的列表项是否具有类似的区域
var number = 3;
var els = $('li[data-regions:contains('+number+')]"');
有什么想法吗?如果没有,你知道我如何能够扩展jQuerys属性选择器来获取参数吗?
答案 0 :(得分:2)
现有答案显示*=
会导致许多误报。如果您可以将data-regions属性更改为以空格分隔("3 52 30"
),则可以使用包含单词选择器(~=
)的属性,如下所示:
HTML:
<li data-regions="3 52 30">
<a data-href="/explore/barbados/people/some-person">Some Person</a>
</li>
和JS:
var number = 3;
var els = $('li[data-regions~='+number+')]"');
答案 1 :(得分:1)
为什么不把这个打成碎片:
var number = 3;
/* First, fetch all li elements that has data-regions attribute */
var els_candidates = $('li[data-regions]');
var els = [];
els_candidates.each(function(index) {
/* Then evaluate if id exists, this way you check for ids, not only chars */
var regionsArray = $(this).data('regions').split(',');
if (regionsArray.indexOf(number+'') !== -1) {
els.push($(this));
}
});
console.log(els);
我假设您需要区分id:3(如您的示例中),而不仅仅是字符3.例如,
<li data-regions="1,8,52">
<a data-href="/explore/barbados/people/some-person">Some Person</a>
</li>
如果您搜索数字5而不是ID,则评估为true:5。这就是为什么我将解决方案分成几部分以避免错误。
答案 2 :(得分:0)
使用li[data-regions*='3']
选择标签名称为li的所有元素,这些元素具有值为3的属性数据区域