ID在一个页面的唯一性

来源:互联网 发布:ecshop导出淘宝数据包 编辑:程序博客网 时间:2024/06/07 09:12
原来对于ID唯一性的理解居然以为是在一个项目中ID号得是唯一的.
然而,今天在学习的时候:
id是唯一的,每个id值在一个页面中只能使用一次。如果多个元素分配了相同的id,将只匹配该id选择集合的第一个DOM元素。但这种行为不应该发生;有超过一个元素的页面使用相同的id是无效的

因而在不同的页面使用相同的ID号还是可以的.


然后再比较jquery的类选择器与js原生getElementByClassName()函数的实现代码.
我发现和我原来理解的是不一样的.
就是选择单个和多个的区别.
原话是:
jQuery除了选择上的简单,而且没有再次使用循环处理
因而jQuery是多选的,而js原生getElementByClassName()函数是单选的.
相同的操作两种方法实现:
<script type="text/javascript">
        //通过原生方法处理
        //样式是可以多选的,所以得到的是一个合集
        //需要通过循环给合集中每一个元素修改样式
        var divs = document.getElementsByClassName('aaron');
        for (var i = 0; i < divs.length; i++) {
            divs[i].style.border = "3px solid blue";
        }
    </script>

    <script type="text/javascript">
        //通过jQuery直接传入class
        //class选择器可以选择多个元素
        $('.immoc').css("border", "3px solid red");
    </script>

结论是:
不难想到$(".imooc").css()方法内部肯定是带了一个隐式的循环处理,所以使用jQuery选择节点,不仅仅只是选择上的简单,同时还增加很多关联的便利操作.
然后同样要区分选择多个和单个的区别的是
jQuery的$('element')与js原生的getElementByTagName('element');

和js原生的方法相比,jQuery对于兼容性上的优势:
使用原生的js防火获取到对应节点时--
  1. IE会将注释节点实现为元素,所以在IE中调用getElementsByTagName里面会包含注释节点,这个通常是不应该的
  2. getElementById的参数在IE8及较低的版本不区分大小写
  3. IE7及较低的版本中,表单元素中,如果表单A的name属性名用了另一个元素B的ID名并且A在B之前,那么getElementById会选中A
  4. IE8及较低的版本,浏览器不支持getElementsByClassName



天气变冷了,关键是还没哟空调哈,手冻,没做笔记了,手冻,冷,哈哈

0 0
原创粉丝点击