2012-08-29 95 views
-1

我使用jQuery .filter()函数来检查某个特定值是否是一个复选框列表中选择:筛选逗号分隔跨度文本

$("#Control").find("input[type=checkbox]:checked") 
      .next("label") 
      .filter(function() { 
       return $.trim($(this).text()) == "Option 1"; 
      }) 
      .length != 0'; 

我怎样才能做到这一点,如果我有一个逗号在一个范围内的分隔值列表,我想检查一个特定值是否存在?

ex。 Home Phone, Email Address, Mobile Phone可能是跨度文本

+0

你想检查,在一个逗号分隔的字符串的值,从一个特定的字符串是在该跨度?因此,从文本'foo,bar,baz'检查'foo'? –

+0

是的,但只能通过过滤方法 – rahul

+0

为什么你需要使用'filter()'使其复杂化,'indexOf()'足以做到这一点,而且运行起来更便宜。噢,举个例子,说明你希望得到什么类型的“span”文本,以及你会寻找什么类型的值。 –

回答

0

斯普利特跨度上,文本,然后检查,看看是否你的字符串是结果数组里面:

$("span").filter(function() { 
      return $(this).text().split(/,\s*/).indexOf("Email Address") > -1; 
     }); 

示例 - http://jsfiddle.net/nFjCn/3/

+1

不应该是'split(/,\ s * /)'?它是逗号分隔的,我期望逗号后面有空格。 –

+0

谢谢,'.'本意是','他没有明确说明逗号后面有空格。但是如果他确实会补充一点。 –

+0

诚然,问题中的信息明显缺乏。 –

2

为什么不呢?与正则表达式,但我认为还有其他更简单的解决方案。

$("#Control").find("input[type=checkbox]:checked") 
      .next("label") 
      .filter(function() { 
       var regex = /,? *Email Address *,?/; 
       return regex.test($(this).text()); 
      }).length != 0; 

同例如比@Richard道尔顿这里http://jsfiddle.net/nFjCn/1/ 你必须确保一个空白遵循在正则表达式文本。