2013-07-23 101 views
1
<ruby><rb>自分</rb><rp>(</rp><rt>じぶん</rt><rp>)</rp></ruby> 

我想刪除<ruby>標記,但我想保留這些內容。我想要使​​用頁面上的所有<ruby>標籤。如何刪除HTML標籤,但保留文本,然後更換標籤?

我甚至不知道如何嘗試,我有想法將HTML內容保存在一個變量中,用hide()刪除<ruby>標籤,然後再次飛濺文本,但我不知道如何重新編輯文本,將其插入到文本的特定部分。此外,我正在努力與each

我還想記住標籤被刪除的位置,所以我可以稍後再點擊它們。

+0

問題被編輯,以便標籤被移除但被記住以便它們可以被重新包裝。 – projeqht

回答

4

使用unwrap功能:

$('ruby').unwrap();

http://api.jquery.com/unwrap/

編輯:

如何教程例子同樣按照上面的鏈接?

pTags = $('ruby'); 

if (pTags.parent().is("span")) { 
    pTags.unwrap(); 
    pTags.wrap("<ruby></ruby>"); 
} else { 
    pTags.unwrap(); 
    pTags.wrap("<span class='unwrapped_ruby'></span>"); 
} 

展開的<ruby>標籤,並用一個佔位符<span>標籤包裹。

更新1:

嗯,我以前的代碼有正確的「僞」,但我測試,它不能正常工作。相反,我不得不做這樣的事情:

pTags = $('ruby'); 
var content = pTags.contents(); 

$("button").click(function() { 
    if (content.parent().is("span")) { 
     content.unwrap().wrapAll("<ruby></ruby>"); 
    } else { 
     content.unwrap().wrapAll("<span class='unwrapped_ruby'></span>"); 
    } 
}); 

更新2:

更新1到考慮多種<ruby>標籤沒拿。我已經更新了代碼,以便它可以用於多個ruby標籤以及嵌套的<ruby>標籤!

var wrapper = $('ruby'); 
var content; 

$("button").click(function() { 
    wrapper.each(function() { 
     content = $(this).contents(); 
     if (content.parent().is("span")) { 
      content.unwrap().wrapAll("<ruby></ruby>"); 
      wrapper = $('ruby'); 
     } else { 
      content.unwrap().wrapAll("<span class='unwrapped_ruby'></span>"); 
      wrapper = $('span.unwrapped_ruby'); 
     } 
    }); 

}); 

嘗試jsfiddle

+0

是否可以記住標籤被刪除的位置,以便以後再回來? –

+0

將.html()複製到JS變量。 –

+1

答案已更新.. – projeqht

0

如果你只是想刪除的紅寶石標籤,你可以做這樣的事情:

$(document).ready(function(){ 
    var cont = $('ruby').contents().unwrap(); 
    $('html').append(cont) 
}); 

DEMO