jQuery:包含html
我有一个表格,其中包含逗号分隔的数字列表,如下所示:
。 我正在尝试选择不包含特定数字的表格单元格。 这个选择器工作:
$("td:not(:contains('76'))", $table)
问题是可能存在包含’576’或’761’等的行。
为了解决这个问题,我决定在每个数字周围放一个 ,现在就是:
。 我的选择器现在是:
$("td:not(:contains('76'))", $table)
当我在Firebug中调试这个选择器时,它会返回一些实际上不存在于HTML源代码中的span标记,而不是正确的
基本上,将’ ‘放在
:contains()
字符串中会破坏选择器。 是否有任何选择器类似于:contains()
,当HTML传递给它时,它将正常工作? 或者有什么方法可以通过的整个字符串进行选择?
顺便说一句,这个网站使用的是jquery 1.3.2。
如果你想坚持使用 ,即使使用jQuery 1.3.2,这仍然有效:
var $tds = $("table td").filter(function() { return !$(this).find('span').filter(function () { return $(this).text() === '76'; }).length; });
http://jsfiddle.net/mattball/PFk8H/
另一方面,如果你想回到旧的标记,它实际上很容易:
var $tds = $("table td").filter(function() { return !$(this).text().match(/\b76\b/); });
http://jsfiddle.net/mattball/L6AFz/
要在正则表达式中使用变量,请使用new RegExp(string)
构造函数语法 :
var n = 76, re = new RegExp("\\b" + n + "\\b"); var $tds = $("table td").filter(function() { return !$(this).text().match(re); });
试试这个:
$(“td span:not(:contains(’76’))”,$ table).parent()
$("td span", $table).filter(function(){return $(this).text() != '76';}).parent()
您可能无法使用:contains
此内容。 如你所述:contains('76')
将匹配’76’,’576’,’761’等。你可以尝试使用.filter
来获得你想要的东西。
$('td:has("span")').filter(function(){ var x = true; $('span', this).each(function(){ x = x && $(this).text() != '76'; }); return x; });
演示: http : //jsfiddle.net/KvK3J/
用jQuery 1.2.6测试
$("td>span").filter(function() { return ($(this).text() != 76); }).parent().css("text-decoration", "underline");
$("td>span").filter(function() { return ($(this).text() != 76); }).parent().css("text-decoration", "underline");
要避免“包含”问题,您可以将它们作为类:
和:
$("td:not(:has(span.76)"), $table)
这可以调整为在1个对象中具有倍数,如下所示:
或者甚至放入TD本身就可以更加简化选择器
$("td:not(.76 .77, $table)
我会使用正则表达式来匹配表行的内部。 首先迭代所有元素,然后忽略与正则表达式匹配的元素
这是一个匹配的基本:
/^76$/g
查看RegExr以构建更多正则表达式。