美文网首页
选择器大全

选择器大全

作者: 尤樊容 | 来源:发表于2018-01-09 14:12 被阅读10次

    选择器主要使用的是JavaScript选择器和jQuery选择器,现在为了系统的记录一下所有的选择器,包括querySelector/querySeletorAll我比较少用的。

    JavaScript选择器
    /*javaScript选择器*/
        var object = document. getElementById("id名"); //返回一个id名为"id名"的对象
        /*
        * 注意:getElementById()在IE6/7下有可能执行的结果是不同的,
        * 在ie6/7中,getElementById(idvalue)同时查询id、name两个值,
        * 返回的结果是第一个name或者id等于idvalue的对象,并不是仅按照id来查找的
        * */
        /*解决以上问题的方法:做个判断名字是id的才返回,当然不用兼容ie6、7的就不用管啦*/
        var getElementById = function(ids){
            var idvalue = document.getElementById(ids);
            if(idvalue.id === ids){
                return idvalue;
            }else{
                var node = document.all[id];
                for(var i=0,len=node.length;i<len;i++){
                    if(node[i].id===id)
                        return node[i];
                }
            }
        }
    
        /*
        * name属性为name值的元素,因为name属性值不是唯一的,
        * 所以查询到的结果有可能返回的是一个数组,而不是一个元素。
        * 注意:getElementsByName(name)在旧版浏览器中不支持除input之外的标签
        * */
        var object = document.getElementsByName("class名");
    
        /*返回所有标签名为"标签名"的元素*/
        var object = document.getElementsByTagName("标签名");
    
        /*
        * 返回所有class名为"class名"的元素
        * getElementsByClassName()在ie8及以下会有问题,以下链接可以解决这问题
        * https://www.jianshu.com/p/bc1e2c0faa92
        * */
        var object = document. getElementsByClassName ("class名");
    
    querySelector/querySeletorAll选择器
       /*
        * 这里的选择器没有规定的类型,只要是选择器都可以
        * 兼容IE6、IE7不支持,这里有我写的兼容的方法:https://www.jianshu.com/p/872d69047dda
        * */
        var object =  document.querySelector("选择器");//返回查找到的第一个
        var object =  document.querySelectorAll("选择器");//返回查找到的所有
    
    jQuery选择器

    很基本的东西,但是有好多奇怪的选择器都没有用过,发现有时使用的话代码会简洁很多,提高速度,所以做个总结,以便于以后使用。
    *基本选择器

    $("#id名")  //选取id属性为所写id名的一个元素
    $(".test")  //选取文档中所有的class属性为“test”的元素,可能是一个可能是多个
    $(“*”)  //选取所有元素
    $(“标签”)  //选取文档中所有匹配选择器的元素
    $(“selector1,selector2,selector3”)  //选取文档中所有选择器匹配的元素,逗号分隔
    
    
    • 层级选择器:根据元素之间的层次关系来获取特定的元素
    $(“标签1 标签2”)  //获取所有标签1中的标签2后代元素
    $(“标签1>标签2”) // 获取所有标签1中的标签2子元素
    $(“标签1+标签2”)  //获取紧跟标签1之后的标签2元素,和  $(“标签1”).next(“标签2”)  的效果一样
    $(“标签1~标签2”) 获取紧跟标签1之后的所有标签2元素,和  $(“标签1”).nextAll(“标签2”)  的效果一样
    
    
    • 过滤选择器:过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、表单过滤
    $("指定元素:first") // 选取第一个指定元素
    $("指定元素:last") // 选取最后一个指定元素
    

    A: 基本过滤

    $("p:first")// 选取第一个P元素
    $("p:last")// 选取最后一个P元素
    
    $("ul li:first-child") //选取每一个ul中的第一个子元素,如果第一个不是li,则不匹配,这是和:first的区别
    $("ul li:last-child") //选取每一个ul中的最后一个子元素,如果最后一个不是li,则不匹配,这是和:last的区别
    $("ul li:nth-child(n)") //选取每一个ul中的第n个子元素,如果第n个不是li,则不匹配
    $("ul li:nth-last-child(n)") //选取每一个ul中的倒数第n个子元素,如果倒数第n个不是li,则不匹配
    
    $("ul li:first-of-type") //选取每一个ul中的第一个li子元素,这是和:firs-child的区别
    $("ul li:last-of-type") //选取每一个ul中的最后一个li子元素这是和:last-child的区别
    $("ul li:nth-of-type(n)") //选取每一个ul中的第n个li子元素,这是和:nth-child(n)的区别
    $("ul li:nth-last-of-type(n)") //选取每一个ul中的倒数第n个li子元素,这是和:nth-last-child(n)的区别
    
    $("ul li:only-child")  //选取ul中只有一个li的元素
    $("ul li:only-of-type") //选取ul中只有一个li子元素的元素而且子li元素没有兄弟元素
    
    $("p:eq(3)") // 选取索引为3的P元素
    
    $("p:even") //选取索引为偶数的P元素
    $("p:odd") //选取索引为奇数的P元素
    
    $("p:gt(10)") //选取索引大于10 的P元素
    $("p:lt(10)") //选取索引小于10 的P元素
    
    $("p:not(.test)") //选取class属性不是“test”的P元素
    
    $(":header") //选择所有标题元素(h1 - h6)
    
    $(":focus")  //选取当前获取焦点的元素
    
    $("div:animated")  //选取当前正在执行动画的div元素
    

    B: 内容过滤

    $("div:contains('定文本')")  //选取所有中包含“定文本”的div元素
    
    $("td:empty")  //选取所有不包含子元素或者文本的
    
    $("div:parent")  //选取文档中所有有子元素或者文本的div元素
    
    $(":root") //选取整个文档的根元素,在HTML中,文档的根元素,永远是html
    
    $("div:has(p)")  //选取所有含有P元素的div
    

    C: 可见性过滤

    $("input:hidden")  //选取所有type为hidden的元素
    $("div:hidden")  //选取所有隐藏的div
    
    $("div:visible")  //选取所有可见的div
    

    D: 属性过滤

    $("div[id]")  //选取所有包含id属性的div
    
    $("div[class='test']")  //选取所有class属性值为test的div元素
    $("div[id!='test']")  //选取所有id属性值不为test的div元素
    
    $("div[titile*='text']")  //选取所有title中包含有“text”的div
    
    $("input[id][name='name']")  //选取有ID属性并且name属性值为“name”的input元素
    

    E: 表单过滤

    $(":input")  //选取所有input元素(包括input、textarea、select、button)
    
    $(":text")  //选取所有的单行文本框
    $("password")   //选取所有的密码框
    
    $(":radio")  //选取所有的单选框
    $(":checkbox")  //选取所有的复选框
    
    $(":image")  //选取所有的图像按钮
    
    $(":reset")  //选取所有的重置按钮
    $(":submit")  ///选取所有的提交按钮
    
    $(":button")  //选取所有的按钮
    
    $(":file")  //选取所有的上传控件
    
    $(":hidden")  //选取所有的不可见元素
    

    (原生的JS选择速度相比较之下会快于同等条件下的JQuery选择器)
    感谢: shadow_yn
    写完发现这个写的很好,留着以后看:http://blog.csdn.net/zhejingyuan/article/details/24009805

    相关文章

      网友评论

          本文标题:选择器大全

          本文链接:https://www.haomeiwen.com/subject/fikcittx.html