搜索存储在html属性中的csv以获取给定值

时间:2015-10-19 18:11:28

标签: jquery csv

说我有一个号码,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属性选择器来获取参数吗?

3 个答案:

答案 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的属性数据区域