En la documentación de jQuery dice:
El texto coincidente puede aparecer directamente dentro del elemento seleccionado, en cualquiera de los descendientes de ese elemento, o en una combinación
Por lo tanto, no basta con usar el :contains()
selector , también debe verificar si el texto que busca es el contenido directo del elemento al que se dirige, algo así:
function findElementByText(text) {
var jSpot = $("b:contains(" + text + ")")
.filter(function() { return $(this).children().length === 0;})
.parent(); // because you asked the parent of that element
return jSpot;
}