Кажется, вы хотите что-то вроде этого:
$('.post_meta a').filter(function() {
return $.trim($(this).text()) === "Slider";
}).remove();
Принимает все ссылки внутри .post_meta
элементов и фильтрует их по содержанию (независимо от того, является ли текст Slider
. Затем эти элементы удаляются.
Ссылка: filter
, trim
, remove
Обновление: По поводу вашего комментария. Удалить запятую немного сложнее, но вы можете сделать это следующим образом (после удаления ссылок):
$('.post_meta').each(function(){
$.each($(this).contents(), function() {
if(this.nodeType === 3) {
this.nodeValue = this.nodeValue.replace(/,\s*,/g, ',');
}
});
});
Это, вероятно, не очень производительный, хотя ...
Обновление 2: Видимо, удаление запятой не сработало, потому что после удаления узла элемента у вас есть два смежных текстовых узла, а не один.
Это работает, хотя:
$('.post_meta').each(function(){
var c = $(this).contents();
$.each(c, function(i) {
var prev = c[i-1];
if(this.nodeType === 3
&& prev
&& prev.nodeType ===3
&& $.trim(this.nodeValue) === $.trim(prev.nodeValue)) {
this.parentNode.removeChild(this);
}
});
});
DEMO
Это в основном удаляет дубликаты смежных текстовых узлов.
Почему я делаю это так сложно?
Поскольку похоже, что к ссылкам могут быть подключены обработчики событий JavaScript, и если вы получите и установите HTML, эти обработчики будут потеряны.
Если это не так и HTML-код действительно такой, вы можете сделать:
jQuery('.post_meta').html(function(i, html) {
return html.replace('<a href="#">Slider</a>,','');
});
DEMO 2
Но, как уже было сказано, это работает только в том случае, если (а) HTML точно совпадает со строкой и (б) вы не привязываете никаких обработчиков событий к ссылкам (они будут потеряны).