2016-05-31 66 views
-1

我使用<div contenteditable="true">,當我按空格輸入換行符時,它會生成<div><br></div>。 但我只是想從開始和結束時刪除它。有效的方法來刪除空格

例如:

<div contenteditable="true">

<div><br></div>我想刪除這個

ABC

<div><br></div>保持

<div><br></div>我想刪除這個

<div><br></div>我想刪除這個

</div>

for(var x = item.length - 1 ; x >= 0 ; x--){ 
    if($(item[x]).html() == "<br>"){ 
     $(item[x]).remove(); 
    }else{ 
     break; 
    } 
} 

for(var x = 0; x <= item.length-1 ; x++){ 
    if($(item[x]).html() == "<br>"){ 
     $(item[x]).remove(); 
    }else{ 
     break; 
    } 
} 

目前我使用兩個循環刪除它,但我正在尋找一個更好的方式來過濾它。 任何人都可以引導我?

謝謝。

+0

在要刪除它們什麼樣的行動?任何「點擊事件」,「模糊事件」等? –

+0

單擊事件.... – hendry91

回答

0

你可以用while循環代替for循環實現它。您需要存儲firstlast子項的參考號contenteditablediv,並使用while循環對其進行操作。有關代碼的詳細解釋。

$('.remove').on('click', function() { 
 
    var firstChild = $('div[contenteditable] div:first'); 
 
    var lastChild = $('div[contenteditable] div:last'); 
 
    //store the reference for first and last child of the contenteditable div 
 
    while(firstChild.html()=="<br>")//remove all the element's until firstchild's html!="<br>" i.e. is not empty 
 
    { 
 
    firstChild.remove();//remove it 
 
    firstChild= $('div[contenteditable] div:first'); //again store the reference to new first child after remove 
 
    } 
 
    //same goes with last child 
 
    while(lastChild.html()=="<br>") 
 
    { 
 
    lastChild.remove(); 
 
    lastChild= $('div[contenteditable] div:last'); 
 
    } 
 
})
div[contenteditable] { 
 
    background-color: orange; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div contenteditable="true"> 
 

 
</div> 
 
<button type="button" class="remove">Remove unwanted</button>

+0

謝謝,即時新鮮的畢業生,仍然在不同的方法和更好的方法學習代碼:D – hendry91

+0

隨時隨地..快樂編碼.. :) –

0

如果你想刪除一個div裏面是空的。(你的問題指出)....

這可能有助於.....

$("div:empty").remove(); 

此代碼刪除的div是空的...如果多數民衆贊成你想這可能有所幫助

+0

但我只想刪除文本之前和最後一個文本之後的空div。 – hendry91