2012-11-15 30 views
2

我想從div中刪除多餘的空格創建標籤(特別是br & p)。 DIV的內容可以如下:如何使用jQuery在div的開頭刪除多餘的空格?

<div> 
    <br> 
    <br> 
    something 
    <br> 
    something 
</div> 

但在其他情況下,他們也只是罰款:在How to remove the first two BR tags with jquery?工作描述

<div> 
    something 
    <br> 
    something 
</div> 

解決方案,如果BR數量是已知的(例如,總是單BR在開始)。如果BR開始時的數量介於0和無限之間,那麼怎麼辦?另外,中間的BR不應該被移除。

尋找類似$ .trim爲div的:)

+0

我想可能與使用開始JavaScript的替換方法。 –

回答

2

下面將去除該文本塊中的所有複製<br>元素(包括開頭):

​$("div"​​​​​​).html(function(i, html) { 
    return $.grep(html.split(/<br\s*\/?>/), function(part) { 
     return $.trim(part) !== ""; 
    }).join("<br>"); 
}); 

DEMO:http://jsfiddle.net/S8qeb/

這將刪除所有<br>元素只在文本塊的開頭:

$("div").html(function(i, html) { 
    var textFound = false; 
    return $.grep(html.split(/<br\s*\/?>/), function(part, i) { 
     if ($.trim(part) !== "") textFound = true; 
     return textFound; 
    }).join("<br>"); 
}); 

DEMO:http://jsfiddle.net/S8qeb/1/

0

試試這個

var otherContent = false; 
$('#yourdiv').contents().each(function() { 
    if(!otherContent) { 
     if(this.tagName.toLowerCase() == "br") { 
      $(this).remove(); 
     } else { 
      otherContent = true; 
     } 
    } 
}); 
+0

哎呀,你是對的..沒有讀好的問題..將刪除我的答案。 –

0

嘗試

$('.trimmable > div').contents().each(function(i){ 
    var node = $(this), 
     contents = $.trim(node.text()); 
    if (this.nodeName === 'BR' || contents === '') { 
     node.remove(); 
    } else { 
     return false; 
    } 
}); 

演示在http://jsfiddle.net/gaby/3TnMT/1/

相關問題