从子标记<a></a> </strong>中删除父标记<strong>

时间:2013-05-08 15:23:20

标签: javascript

我想在JavaScript中使用函数<strong>

删除myfunc(this)标记
<strong><a href="#" onclick="myfunc(this)">mylink</a></strong>

我确实想要清理代码,因此只需删除<strong>代码

5 个答案:

答案 0 :(得分:2)

这应该是这样的:

function myfunc(node)
{
    node.parentNode.parentNode.replaceChild(node, node.parentNode);
}

问题是它只能运行一次,因此您需要额外检查:

function myfunc(node)
{
    var parent = node.parentNode;

    if (parent.nodeName === 'STRONG') {
        parent.parentNode.replaceChild(node, parent);
    }
}

Demo

答案 1 :(得分:2)

直接回答可能是(假设您<a>元素中只有<strong>

function myfunc(e) {
    var oStrong = e.parentNode;
    oStrong.parentNode.appendChild(e);
    oStrong.parentNode.removeChild(oStrong);
}

但是,我还要指出<strong>与可能 - 错误地 - 被用作synonim之间的区别:<b>属性或其表兄,{{1} } css属性。

style.fontWeight = 'bold';旨在强调重要文本,并且将由盲人的浏览器解释为例如。大胆的方面纯粹是一种风格,不会在lynx下呈现。

所以,如果你想制作一些大胆的东西,请使用上面提到的css样式。然后,只需调用<strong>

即可轻松删除此样式

答案 2 :(得分:1)

这也是一种可能的解决方案,它将考虑任何其他也是strong子项的节点。

HTML

<div>
    <strong>saker <a id="link1" href="#">mylink</a> ting</strong>
</div>

的Javascript

function myFunc() {
    this.removeEventListener("click", myFunc);

    var copyNodeList = [],
        parent = this.parentNode,
        grandParent = parent.parentNode;

    while (parent.firstChild) {
        copyNodeList.push(parent.removeChild(parent.firstChild));
    }

    grandParent.removeChild(parent);

    copyNodeList.forEach(function (node) {
        grandParent.appendChild(node);
    });
}

document.getElementById("link1").addEventListener("click", myFunc, false);

jsfiddle

答案 3 :(得分:0)

function myfunc(obj) {
    if ($(obj).parent().is("strong")) {
        $(obj).unwrap();
    }
}

答案 4 :(得分:0)

这样的事情应该有效:

function myfunc(elem){ 
          $(elem).parent().html($(elem)); 
}