0

我想知道如何删除选择某个单选按钮后出现的代码。我已经让它生成了,但是当我移除它时,整个身体都消失了,所以我只需要移除片段。

<head>
    <style>
        input, label {
            line-height: 1.5em;
        }
    </style>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>

<body>
    <form>
        <div>
            <input type="radio" name="modtype" value="My Mods" id="mymods">
            <label for="orange">My Mods</label>
        </div>
        <div>
            <input type="radio" name="modtype" value="Group Mods" id="groupmods">
            <label for="apple">Group Mods</label>
        </div>
        <div>
            <input type="radio" name="modtype" value="Individual Mods" id="individualmods">
            <label for="banana">Individual Mods</label>
        </div>
        <div id="modtype"></div>
    </form>
    <script>
        $("input").on("click", function() {
            $("#modtype").html($("input:checked").val() + " is selected! - Now Choose Mod! :)");
        });
    </script>
    <script>
        var appended = $('<div />').text('YOYOY');
        var fragment = create('<div>Hello!</div><p>...</p>');

        appended.id = 'appended';

        $('input:radio[name="modtype"]').change(

        function() {
            if ($(this).val() == 'My Mods') {
                document.body.insertBefore(fragment, document.body.childNodes[0]);
            } else {
                document.body.remove(fragment);
            }
        });

        function create(htmlStr) {
var frag = document.createDocumentFragment(),
    temp = document.createElement('div');
temp.innerHTML = htmlStr;
while (temp.firstChild) {
    frag.appendChild(temp.firstChild);
}
return frag;
}
    </script>
</body>

 </html>
4

4 回答 4

1

你没有.remove()正确使用。您需要找到您的片段,将其放入 jQuery 对象中,然后调用.remove()该 jQuery 对象。

假设只有一个片段具有您给它的 id,它可以像这样简单:

$("#appended").remove();

删除你给的片段id="appended"

或者,如果您仍然有作为要删除的根的 DOM 元素,您可以这样做:

$(fragment).remove();
于 2013-01-24T04:48:27.340 回答
0

如果这是您要问的,这就是我删除某些元素的方式——您需要知道要删除的 div 的名称。请参阅下面的代码,并更改为您的值

 var removeDiv= document.getElementById("your-div-id");
                if (typeof removeDiv !== "undefined"){
                    if (removeDiv !==  null){                    
                        document.getElementById('your-root-div-id').removeChild(removeDiv);
                    }
于 2013-01-24T04:48:34.117 回答
0

这将修复你的代码,我在这里测试过:http: //jsfiddle.net/gJk7J/

只需更改: document.body.remove(fragment); 至: if(fragment.parentNode)fragment.parentNode.remove(fragment);

于 2013-01-24T04:51:00.173 回答
0

1.

当你这样做时:

document.body.insertBefore(fragment, document.body.childNodes[0]);

片段子节点中的元素变成了document.body的子节点。因此片段不再有子节点。您必须找到您创建的元素(jQuery 或 getElementxxxxxxs)并删除它们。

2.

您要从正文中删除元素的方式不正确。

document.body.remove(fragment);

你可以这样做:

document.body.removeChild(someChildNode); // dom api
$([elem/selector]).remove();              // jQuery
于 2013-01-24T05:34:49.057 回答