Если вы хотите элегантное решение, определите новый селектор. К сожалению, :empty
недостаточно, поскольку что-либо с дочерними элементами текстового узла не пусто.
$.extend($.expr[':'], {
leaf: function(elem, i, match) {
return $(elem).children().length == 0;
}
});
И тогда вы можете сделать:
$("div:leaf:contains('test')").hide();