2013-05-06 27 views
5

Aşağıdaki girişi vardır:Yerinde bir span nasıl kaldırılır?

<p> 
    <span class="highlight"> 
    Some text <b>that can have formatted components too</b>. 
    </span> 
    And some more text here of course. 
</p> 

Ve şu çıktıyı elde etmek istiyorum:

<p> 
    Some text <b>that can have formatted components too</b>. 
    And some more text here of course. 
</p> 

Jquery kullanıyorum ve bir .unwrap() işlevi vardır, ama ben $('.highlight').unwrap() giderseniz o kaldırır <p>. :(

Manuel DOM bir güçlük gibi görünüyor hack. Eğer herhangi bir kısa çözüm biliyor musunuz?

+0

'$ (.. " vurgulamak ") ana (" p ") html ($ (". vurgulamak") metin()); güvenlik için' –

cevap

10

Kaldırmak istediğiniz üst elemanın içine öğeler alırsınız .contents() kullanımı ile.

$(".highlight").contents().unwrap(); 
+0

bir içerebilir ikinci satır: '$ (". highlight "). remove();' (nadir) özel durumla ilgilenmek için '. unwrap herhangi bir içeriği olmadığı için onu kaldırmaz. –

2

sadece jQuery kullanarak bunu yapabilirsiniz yapabilirsiniz

$('.highlight').replaceWith(function() { 
    return $(this).html(); 
}); 
+0

Bu işe yarıyor ama Spokey'in çözümünden çok daha karmaşık. – Quentin

+0

".replaceWith", +1 hakkında bilgi verdiğiniz için teşekkür ederiz. –

+0

İlginç bir şekilde, replaceWith, yalnızca içeriği olan düğümlerle çalışır. (Bu yüzden burada da '$' ('vurgulayın') ekleyin. remove(); 'önerildi, Spokey'nin cevabı üzerine yaptığım yorumu gör) –

0

ile değiştirin deneyin.

belgelere
var cnt = $(".highlight").contents(); 

$(".highlight").replaceWith(cnt); 

Hızlı bağlantılar:

+0

Test ettim ve yalnızca vurgulanmış tek bir öğe ile çalışıyor. (ve sadece tek bir vurgu varsa, ben bu soruya id = "vurgula" olarak işaretlerdim) –

İlgili konular