复杂的jquery选择器,用于在字符串.split中查找令牌
Complex jquery selector that looks for a token in a string.split
我有一个html表,其中一列包含带有逗号分隔数据的<span>
。我想提出一个jQuery选择器,它返回所有行(最好是<tr>
s,但<span>
s目前可以使用),其中span标记中的逗号分隔标记<span>
之一与提供的字符串匹配。
我从以下内容开始:
$('td.col_8 span:contains("duck")')
这将使我获得包含单词"duck"的特定列中的所有跨度。然而,它也可以匹配<span>fox, mallard-duck</span>
。由于"duck"在这段时间内不是唯一的代币,我不希望它包含在比赛中。
有没有办法缩小我的结果集,这样我就只在列分隔列表中包含与特定标记完全匹配的结果?
(我使用的是jQuery 1.2.3)
这就是jQuery表达式的美妙之处。
您可以添加自己的自定义选择器。在这种情况下,我将称之为标签
jQuery.expr[":"].tag = function(elem, index, match, nodeList) {
var tags = $(elem).text().replace(/(?:' +)?,(?:' +)?/g, ",").split(",");
return tags.indexOf(match[3]) > -1;
}
这将对照此选择器检查每个先前匹配的元素。首先,它使分隔变平(所以像"firstTag,onotherer,disly,spaced,tag"这样的东西会起作用)。jQuery已经负责解析选择器,并将其作为match传入。match[3]是你感兴趣的。按照下面的用法,match[3]将是"duck"
$('td.col_8 span:tag("duck")')
返回行将根据列表中的标记返回true或false。
我认为这应该做到
$('td.col_8 span').filter(function() {
return $(this).text().match(/^duck$/);
});
现在,您只需要定义所需的regex,或者实现字符串拆分和数组搜索,以返回一个布尔值,指示是否应包括<span>
。
根据Russ Cam的回答,以下是我的想法:
$('td.col_8 span').filter(function() {
return $.inArray('quiet',$(this).html().split(', ')) !== -1;
});
当然,这假设列表总是用,[space]
分隔,但它应该适用于我的即时用例。
相关文章:
- jQuery字符串使用split()方法在空格后拆分字符串
- 如何在javascript中对以下字符串使用string.split()
- Javascript:不使用.split()方法拆分字符串
- 如何在没有javascript中的split函数的情况下将字符串拆分为单词
- 对API字符串中的JQuery变量使用split()
- 为什么 String.prototype.split 返回完整的字符串
- 使用 .split() 将字符串转换为数组(需要改进)
- 如果字符串不匹配,.split() 返回什么
- 在输入数组的 split() 和子字符串 () 之后的文本区域中显示
- 使用Split将字符串拆分为两个字符的组
- 在javascript中使用split在一个数字字符串中生成所有可能的组合
- 在javascript split()之后为子字符串赋予颜色
- 为什么'abc'.split(/(a|b|c)/)在Javascript中给出a、b、c和空字符串
- 将CSV字符串转换为不带.split()的数组
- javascript split() Word后以字符序列开头的字符串
- 打印Javascript split()数组并将未定义的值转换为字符串
- split()函数返回一个未被分割的字符串
- 为什么split方法仍然返回一个字符串?
- 为什么split函数创建了三个子字符串,而在下面的例子中只创建了两个
- 编写一个不使用javascript中的split方法的字符串拆分函数