Как удалить пустые теги p с помощью jQuery?



Платформа, на которой я создаю веб-сайт, производит пустые теги p в режиме wysiwyg. Как я могу их вынуть?



Что-то вроде этого, возможно...



$("<p> </p>").remove();



Хотя приведенный выше код ничего не делает.

512   6  

6 ответов:

Ответ зависит от того, что означает слово" пустой". Если пустые абзацы <p></p>, то выбор fireeyedboy p:empty - это путь. Если там могут быть пробелы или новые строки или другие подобные вещи, то вы, вероятно, захотите что-то вроде этого:

$('p').each(function() {
    var $this = $(this);
    if($this.html().replace(/\s|&nbsp;/g, '').length == 0)
        $this.remove();
});

Пример: http://jsfiddle.net/ambiguous/7L4WZ/

FCKEditor (не уверен насчет CKEditor или TinyMCE) любит добавлять <p>&nbsp;</p> в HTML, поэтому вам может понадобиться вышеупомянутый несколько уродливый подход.

Попробуйте:

$( 'p:empty' ).remove();

Вы можете попробовать это...

$([selector]).is(":empty")   

Он вернет true, если селектор пуст..Рабочая Демонстрация

Я немного опоздал на вечеринку, но недавно я нашел эту тему, так как хотел решить и эту проблему.

Я придумал здесь Решение Vanilla JS, которое сработало для меня:

var p = document.querySelectorAll('p:empty');
for(var i = p.length - 1; i > -1; i-- ) {
    p[i].parentNode.removeChild(p[i]);
}

Он в основном делает (точно) то, что предложил fireeyedboy, но без jQuery.

Он также, кажется, работает лучше, чем jQuery, а также: http://jsperf.com/remove-empty-elements-javascript-vs-jquery

Надеюсь, это поможет!

Спасибо "му слишком коротка",

Я пробовал ваш код, он работает, но мне нужно завернуть его в jQuery(document).ready(function() {});

Полный код, который работал для меня:

jQuery(document).ready(function() {
    jQuery('p').each(function() {
        var $this = jQuery(this);
        if($this.html().replace(/\s|&nbsp;/g, '').length == 0) {
            $this.remove();
        }
    });
});

Я не знаю, почему это происходит, мой jQuery / JS не так хорош, я изучаю его ;).

Надеюсь, это поможет другому человеку, как я.

Спасибо.

/* Remove empty paragraphs with &nbsp; */
jQuery('p').each(function(){
    if( jQuery(this).html() == '&nbsp;' )
        jQuery(this).remove();
})

Comments

    Ничего не найдено.