Первый, если условие проверяет, нет ли детей или контента, которому я верю.Второй проверяет, содержит ли span пустой текст и будет ли возвращаться только текст внутри span, но не его потомки.
Не такой элегантный и, вероятно, не такой быстрый, как решение slak, но очень явный.
$('div.work1alt > p span').each(function(){
if($.trim($(this).text()) === ""){
$(this).parent().remove();
}
});
РЕДАКТИРОВАТЬ: забыл поставить '=== "" в ifs (doh!)