问答详情
源自:4-5 检测两个节点的包含关系

怎么这样都是不包含啊?还测试了其他几种情况,传入参数为jquery对象,dom对象,明明有包含关系,但都显示不包含?

  $(function () {

                // var node_a = document.body.firstChild;

                var node_a =document.getElementById("divtest");

                

                // var node_b = document.body;

                var node_b = document.getElementsByClassName("title");

                var strTmp = "对象node_a";

                if ($.contains(node_a,node_b)) { //检测是否包含节点

                    strTmp += " 包含 ";

                }

                else {

                    strTmp += " 不包含 ";

                }

                strTmp += "对象node_b";

                $(".content").html(strTmp);

            });


提问者:慕粉3805859 2019-04-06 20:00

个回答

  • 慕盖茨3456306
    2020-10-27 17:38:56

    node_b那个用id来获取可以实现


  • Dr_nie
    2020-05-14 21:31:42

    一个是主body节点,一个是body孩子节点,应该是主body节点包含body孩子节点,即node_b,包含node_a,相反,node_a不包含 node_b

  • 回头看我漂亮的坚持
    2019-06-22 22:22:25

    以上的解释都不是你真正需要的答案。你错在getElementsByClassName("title")[0]。通过classname获取的dom对象是一个集合,不是一个,你要取得第一个后面要用数组的方式[0]

      var node_b = document.getElementsByClassName("title")[0];

  • 慕先生51210
    2019-06-04 12:00:01

    node_a与node_b对调,即$.contains(node_a,node_b)改成$.contains(node_b,node_a),显示“包含”

  • 陈晨辰_
    2019-04-22 10:50:44

    contains里必须放dom对象而不是jQ对象,使用getElementById就可以

    var node_a =document.getElementById("divtest");

    var node_b = document.getElementById("test");


  • 汪汪爱吃鱼
    2019-04-07 18:24:55

    node_a,node_b 位置写反了