Удалить элементы html из dom

Я пытаюсь понять, как удалить здесь тире и двоеточие с помощью jQuery. Есть ли способ? До сих пор я пробовал .empty и .remove, но, к сожалению, не смог заставить его работать.

<p class="meta">
     <strong>Author Name</strong>
     –                                <-- remove this
     <time>June 7, 2013</time>
     :                                <-- remove this
</p>

person J82    schedule 11.07.2014    source источник
comment
возможный дубликат jQuery: как удалить текст но не дочерние элементы   -  person jpgauthier    schedule 11.07.2014


Ответы (6)


Вы могли бы использовать...

$('.meta').contents().filter(function() { return this.nodeType == 3 }).remove()

jsFiddle.

person alex    schedule 11.07.2014
comment
Это правильный ответ. Только после публикации собственного ответа я увидел ваш. - person Jose Rui Santos; 11.07.2014

Попробуй это :

$(function(){
   var $children = $('.meta').children();
   $('.meta').empty().append($children);
});

Демо

person Bhushan Kawadkar    schedule 11.07.2014

Я бы предложил воссоздать ваш узел $(".meta") DOM, чтобы вам нужно было извлечь strong и время, очистить свой $(".meta") и вставьте ранее сохраненные узлы.

person Aleksandr Shumilov    schedule 11.07.2014

Вам нужно использовать contents(), который возвращает все дочерние элементы (включая текстовые узлы). Затем используйте remove(), чтобы удалить эти текстовые узлы.

http://jsfiddle.net/Pv3qX/

$(".meta").contents().filter(function() {
     return this.nodeType == 3; // 3 for TEXT_NODE
}).remove()
person Jose Rui Santos    schedule 11.07.2014

Попробуй это,

$(function(){
   $('p.meta').html($('p.meta').find('*'));
});

Текущая демонстрация

Или попробуйте,

$(function(){
    $('p.meta').html(function(){ return $(this).find('*');});
});

Альтернативный

Обновлено, если к вашему дочернему элементу прикреплены события, используйте contents и фильтр как,

$(function(){
    $("p.meta").contents().filter(function(){ return this.nodeType == 3; }).remove();
});

Демо

См. Как я могу изменить текст элемента без изменения его дочерних элементов?

person Rohan Kumar    schedule 11.07.2014
comment
Проблема, если есть прослушиватели событий непосредственно на этих элементах. - person alex; 11.07.2014

Вот решение: http://jsfiddle.net/E6GYs/

$(document).ready(function(){
    $(document).click(function(){
     $('.meta time').remove();
  })
    })
person Maxim Ershov    schedule 11.07.2014