Esto se basa en la respuesta de Caspar, pero era demasiado grande para los comentarios.
Pensé que podría ser útil para otros.
que utiliza la solución de Caspar, pero encontraron que una cadena vacía ""
Se considera que existe en cualquier cadena, véase:
https://stackoverflow.com/a/18399216/1063287.
En mi situación SuperSweetCheckbox
es un valor dinámico y, a veces una cadena vacía, en cuyo caso no quiero que se produzca ninguna lógica coincidente.
Creación de una función seudo usando match()
parece que funciona, consulte:
https://stackoverflow.com/a/18462522/1063287.
También puede utilizar filter()
, consulte:
https://stackoverflow.com/a/15364327/1063287).
A continuación se muestra un ejemplo de las tres variantes - :contains()
, filter()
y una función personalizada:
jsFiddle
jsFiddle link
jQuery
var myString = "Test";
//var myString = "";
// 01. :contains() - matches empty string as well
$("ul li > label:contains(" + myString + ")").closest("li").addClass("matched").siblings("li").addClass("notmatched");
// 02. filter()
$("ul li > label").filter(function() {
return $(this).text() === myString;
}).closest("li").addClass("matched").siblings("li").addClass("notmatched");
// 03. custom function
$.expr[':'].textEquals = $.expr.createPseudo(function(arg) {
return function(elem) {
return $(elem).text().match("^" + arg + "$");
};
});
$("ul li > label:textEquals(" + myString + ")").closest("li").addClass("matched").siblings("li").addClass("notmatched");
HTML
<ul>
<li>
<label>Test</label>
</li>
<li>Oh Nu</li>
</ul>
CSS
.matched {
background: yellow
}
.notmatched {
background: aqua;
}
no sabía nada de esto. Muy genial. –