2012-12-07 50 views
2

假設我的HTML看起來我的HTML看起來像這樣JQuery的 - 除去中間元素

<p> 
"a" 
"c" 
</p> 

這樣

<p>a<span>b</span>c</p> 

$("span").remove(); 

我怎麼合併這兩個部分後合併在一起,所以我的HTML看起來像<p>ac</p>

jsfiddle

+4

你爲什麼如此迷戀上了嗎? – Alexander

+0

稱之爲強迫症和好奇:) – Gal

+0

的組合,我會給出最好的答案永遠 - >'$(P)的.html(「交流」);' – adeneo

回答

3
$("span").remove(); 
$("p").html($("p").html()); 
​ 

結果:

<p>ac</p> 
+0

嗯,這是......煩人簡單。 – Gal

+1

我相信所有的孩子節點的綁定將不復存在。很抱歉,不能那麼容易 – Alexander

+0

@Alexander這_is_的限制。通常情況下,不會有直接的綁定,但是(特別是當事件委託很容易)。 –

0

這裏是一個,它不僅影響文本節點連接的任何兩個連續的。

$("span").click(function() { 
    var parent = this.parentNode; 
    $(this).remove(); 
    normalize(parent); 
}); 
function normalize(element){ 
    var contents = $(element).contents(); 
    contents.each(function(i){console.log(this.nodeType); 
     if (this.nodeType == 3 && i > 0){ 
      var prev = contents[i-1]; 
      if (prev.nodeType == 3){ 
       this.nodeValue += prev.nodeValue; 
       prev.parentNode.removeChild(prev); 
      } 
     } 
    }); 
} 

http://jsfiddle.net/mowglisanu/dgBwc/13/

0
var p = $('p'), 
    p2 = p.clone(true); 
    p2.find('span').remove(); 
    p2.text(p2.text()); 
    p.parent().empty().append(p2); 

FIDDLE

保持綁定!

0

我知道這是老了,但是這是Node.normalize是:

$('p').get(0).normalize() 

的Node.normalize()方法把指定的節點及其所有子樹變成了「標準化」形成。在標準化的子樹中,子樹中的文本節點都是空的,並且沒有相鄰的文本節點。