Вы можете просто просмотреть элементы :empty
<a>
и удалить их вместе со следующими соседними текстовыми узлами ";"
в цикле, например:
$(".test a:empty").each(function() {
if(this.nextSibling.nodeValue == ";")
this.parentNode.removeChild(this.nextSibling);
}).remove();
Вы можете проверить это здесь .
Это просто возвращает пустые якоря, и перед тем, как удалить их из DOM, просматривает их конечные текстовые узлы, чтобы определить, явно ли они ";"
в содержимом ... если это так, то мы удаляем это текстовый узел от родителя <td>
. Затем после этого цикла мы удаляем все пустые якоря, которые мы нашли в первую очередь.