作为一名刚出来的前端菜鸟,有时候jq对象和dom对象概念理解的不是很深入。空闲时间写点东西来理解一下。

  1. 代码如下

<div id="dome">
    <div class="b" str="1">1111</div>
    <div class="b" str="2">222</div>
    <div class="b" str="2">333</div>
    <div class="b" str="2">444</div>
    <div class="b" str="1">555</div>
</div>
<script>
    $(function(){
        $("div[class='b'][str='1']").css("background","red");
         $(".b").eq(0).attr("str");  //可以获取到这个对象的属性str的值。
         $(".b")[0].attr("str");    //报错
    })
</script>
  $(".b").eq(0)获取的对象如下

图片描述

  $(".b")[0]获取的对象如下

图片描述

  • $(".b").eq(0)$(".b")[0]获取的是同一个对象,为什么$(".b")[0].attr("str")会报错jQuery方式获取的对象使不能直接使用JavaScript的一些方法的,原来jQuery 获得的对象并不和我们平时使用getElementById获得的对象是一样的对象。所以一些新手就很迷惑,为什么${”#Element”}不能直接 innerHTML,这就是原因所在。*

dom对象正确获取属性:$(".b")[0].style.color
dom对象正确获取自定义属性:$(".b")[0].attributes['str'].nodeValue

可以了解下dom对象和jq对象的转换


Berle
97 声望3 粉丝