我试图准确地突出显示包含某个字符串的所有字段,在下面的示例中,我还将匹配 someuser2、someuser3 等。
$("div.forumbody .username:contains('someuser')").css("background", "#6a5acd");
如何搜索确切的字符串并制作字段#6a5acd 的背景?提前致谢。
试试这个
创建自定义选择器
$.expr[':'].textEquals = function(a, i, m) {
return $(a).text().match("^" + m[3] + "$");
};
并使用它
$("div.forumbody .username:textEquals('someuser')").css("background", "#6a5acd");
这对我来说是正确的...确保您的选择器在没有包含的情况下正常工作...
$("div.forumbody .username").css("background", "#6a5acd");
编辑
对于文本字段:
$("div.forumbody .username[value*=someuser]").css("background", "#6a5acd");
或者,如果它们没有预先填充(基于 Govind 的回答):
$.expr[':'].valHas = function(a, i, m) {
return $(a).val().match("^" + m[3] + "$");
};
$("div.forumbody .username:valHas('someuser')")
双重编辑
这经过测试工作更简单:
jQuery("div.forumbody .username:text[value*='someuser']").css("background", "#6a5acd");
尝试添加一个扩展伪函数:
$.expr[':'].textEquals = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().match("^" + arg + "$");
};
});
然后你可以这样做:
$("div.forumbody .username:textEquals('someuser')").css("background", "#6a5acd");