Платформа, на которой я создаю сайт, создает пустые теги p
в режиме wysiwyg. Как я могу их вынуть?
Что-то вроде этого, возможно...
$("<p> </p>").remove();
Хотя код выше ничего не делает.
Платформа, на которой я создаю сайт, создает пустые теги p
в режиме wysiwyg. Как я могу их вынуть?
Что-то вроде этого, возможно...
$("<p> </p>").remove();
Хотя код выше ничего не делает.
Ответ зависит от того, что означает "пустой". Если пустые абзацы <p></p>
, тогда можно использовать переключатель fireeyedboy p: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, поэтому вам может потребоваться вышеупомянутый несколько уродливый подход.
Try:
$( '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
Надеюсь, это поможет!
Спасибо "mu слишком коротко",
Я пробовал свой код. Он работает, но мне нужно обернуть его в 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();
})