0

皆さん、こんにちは。

実際、いくつかの DOM 要素を削除しようとしているときに「c.replace は関数ではありません」というメッセージが表示され、理解できません。

一部を削除したい

  • DOMからのタグなど、私はそれをやった:

    var liste=document.getElementById("tabs").getElementsByTagName("li");
    
        for(i=0;i<liste.length;i++)
        {
            if(liste[i].id==2)
            {
                $("#tabs").detach(liste[i]);
            }
        }
    

    .detach と .remove を試しましたが、同じです。jQuery の私のバージョンは 1.7.1.min.js です。

    手伝ってくれてありがとう。

  • 4

    4 に答える 4

    5

    NodeLIst での反復の順序

    要素を削除するときに変更されている NodeList の前方反復を行うと、問題が発生する可能性があります。DOM から要素を削除するときは、逆に繰り返します。


    の誤用detach()

    また、引数.detach()はネストされた検索を実行するのではなく、jQuery オブジェクト内の既存の要素に対するフィルターとして機能し、文字列を渡す必要があります。実際に をデタッチしたいようです。これは、それ自体liを呼び出す必要があることを意味します....detach()li

    var liste=document.getElementById("tabs").getElementsByTagName("li");
    
    var i = liste.length
    
    while(i--) {
        if(liste[i].id==2) {
            $(liste[i]).detach();
        }
    }
    

    remove()好ましいかもしれません

    を使用する.detach()と、すべての jQuery データが保持されることに注意してください。この要素をもう使用しない場合は、.remove()代わりに使用する必要があります。

    // ...
        $(liste[i]).remove(); // clean up all data
    

    コード削減

    最後に、jQuery を使用しているので、これらすべてをセレクターで行うことができます...

    $('#tabs li[id=2]').remove(); // or .detach() if needed
    

    有効な ID 属性

    IDに関して次の点に注意してください...

    • ページに重複した ID を持つことは無効です
    • 数字で始まる ID を持つことは HTML4 では無効です。

    上記のセレクターでは、attribute-equalsフィルターを使用したので動作しますが、他の場所での問題を回避するために、実際には有効な HTML を使用する必要があります。

    于 2012-04-20T13:06:16.853 に答える
    3

    liste(まだ) jQuery オブジェクトではありません。使用する$(liste[i])

    または使用

    var liste= $('#tabs li');
    
    于 2012-04-20T13:03:32.093 に答える
    0

    多分私は何かが欠けているかもしれませんが、IDは数字の2と一致すると思われます.

    var liste=document.getElementById("tabs").getElementsByTagName("li");
    
    for(i=0;i<liste.length;i++) {
        if(liste[i].id==2) {
           $(liste[i]).detach();
        }
    }
    

    あなたはすでにjQueryを使用しているので、次のことをしてみませんか:

    $("li", "#tabs").filter("#2").detach();
    
    于 2012-04-20T13:11:29.037 に答える
    0
    var two = document.getElementById('2');
    two.parentNode.removeChild(two);
    
    于 2012-04-20T13:13:06.227 に答える