1
<ruby><rb>自分</rb><rp>(&lt;/rp><rt>じぶん&lt;/rt><rp>)&lt;/rp></ruby>

我想删除<ruby>标签,但我想保留内容。我想用<ruby>页面上的所有标签来做。

我什至不知道如何尝试,我想将 HTML 内容保存在变量中,用 删除<ruby>标签hide(),然后再次启动文本,但我不知道如何将其重新插入特定部分的文本。另外,我正在努力解决each.

我还想记住标签被删除的位置,以便稍后通过单击将它们取回。

4

2 回答 2

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

于 2013-07-23T20:04:04.973 回答
0

如果您只是想删除 ruby​​ 标签,您可以执行以下操作:

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

演示

于 2013-07-23T20:06:06.717 回答