0

HTML doc のすべての要素を取得し、それらを配列に格納するとします。ここで、jquery remove() メソッドを使用して要素を削除するとします。サブ子も削除されることはわかっています。今、私はリストをトラバースして、どの子要素も削除されているかを知りたいと思っています。このコードを見てください:-

$(document).ready(function() {
        var list = $('*');
        for (var i=0; i<list.length; i++) {
            console.log(i + " " + list[i].tagName);
        }
        $("table").remove();
        for (var i=0; i<list.length; i++) {
            if ($(list[i]).parent().length == 0) console.log(list[i].tagName + "does not exist in dom now");
            else console.log(i + " " + list[i].tagName + " " + $(list[i]).parent().get(0).tagName);
        }
    });

HTML部分は:-

<div>
    <table>
        <tr>
            <td> Hi this is Sachin </td>
            <td> Hi this is Rahul </td>
        </tr>
    </table>
</div>

そして、私が受け取っている出力は:_

0 HTML parent.html:9
1 HEAD parent.html:9
2 SCRIPT parent.html:9
3 SCRIPT parent.html:9
4 BODY parent.html:9
5 DIV parent.html:9
6 TABLE parent.html:9
7 TBODY parent.html:9
8 TR parent.html:9
9 TD parent.html:9
10 TD parent.html:9
0 HTML undefined parent.html:14
1 HEAD HTML parent.html:14
2 SCRIPT HEAD parent.html:14
3 SCRIPT HEAD parent.html:14
4 BODY HTML parent.html:14
5 DIV BODY parent.html:14
TABLEdoes not exist in dom now parent.html:13
7 TBODY TABLE parent.html:14
8 TR TBODY parent.html:14
9 TD TR parent.html:14
10 TD TR 

td と tr が親を表示している理由がわかりません。それらも削除されたと見なされます。現在、リスト内の削除されたアイテムを確認する他の方法はありますか? 前もって感謝します

4

1 に答える 1

3

問題は、要素に親があるかどうかを確認することです。

if ($(list[i]).parent().length == 0)

DOMから要素を削除したからといって、その子孫がその要素から削除されたわけではありません。それら(親が持っているので)DOMから削除されましたが、それらはすべてまだその親を持っています。

closest代わりに、要素にbody祖先があるかどうかを確認するために使用できます。

if ($(list[i]).closest("body").length == 0)

body要素はDOMに存在しないため、祖先を持つべきではありません。


ちなみに、に0評価されるfalseので、条件を少し単純化できます。

if (!$(list[i]).closest("body").length)
于 2012-06-07T07:01:35.900 に答える