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 オブジェクトに取り込み、その jQuery オブジェクトを呼び出す必要があり.remove()ます。

指定した ID を持つフラグメントが 1 つしかないと仮定すると、次のように単純になります。

$("#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 または getElementxxxxxs) を見つけて削除する必要があります。

2.

本文から要素を削除する方法が正しくありません。

document.body.remove(fragment);

次のようにできます。

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