6 ответов:
Ответ зависит от того, что означает слово" пустой". Если пустые абзацы
<p></p>, то выбор fireeyedboyp:empty- это путь. Если там могут быть пробелы или новые строки или другие подобные вещи, то вы, вероятно, захотите что-то вроде этого:$('p').each(function() { var $this = $(this); if($this.html().replace(/\s| /g, '').length == 0) $this.remove(); });Пример: http://jsfiddle.net/ambiguous/7L4WZ/
FCKEditor (не уверен насчет CKEditor или TinyMCE) любит добавлять
<p> </p>в HTML, поэтому вам может понадобиться вышеупомянутый несколько уродливый подход.
Вы можете попробовать это...
$([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| /g, '').length == 0) { $this.remove(); } }); });Я не знаю, почему это происходит, мой jQuery / JS не так хорош, я изучаю его ;).
Надеюсь, это поможет другому человеку, как я.Спасибо.
/* Remove empty paragraphs with */ jQuery('p').each(function(){ if( jQuery(this).html() == ' ' ) jQuery(this).remove(); })
Comments