欢迎访问 licqi IT技术
我们一直在努力

网站前端_jQuery-基础入门.玩转jQuery基本/层次/过滤/表单选择器?

对比选择:


1. CSS依靠CSS选择器使得网页的结构和表现样式完全分离,CSS选择器能轻松定位并修改指定元素样式,CSS选择器包括标签选择器(以文档元素作为选择器),ID选择器(以文档元素的唯一标识ID作为选择器),类选择器(以文档元素的class作为选择器),群组选择器(多个选择器应用同样的样式规则),后代选择器(元素X的任意后代元素Y),通配选择器(以文档的所有元素作为选择器),伪类选择器(以元素特定行为作为选择器),子选择器(元素X的直接子属元素Y),兄弟选择器(元素X的直属兄弟元素Y),属性选择器(以文档元素特定属性为选择器),详情参考(http://www.w3school.com.cn/css/css_selector_type.asp)

2. jQuery选择器完全继承了CSS选择器的风格,CSS选择器能轻松定位并修改指定元素属性和行为,而无需担心浏览器是否支持这一选择器,jQuery的行为规则都必须在获取到元素后才能生效


说明: jQuery不仅可以像原生CSS样修改元素样式,而且还可以修改元素行为,需要注意的是jQuery中涉及操作CSS样式的部分比单纯的CSS功能更为强大,并且拥有跨浏览器的兼容性.

错误处理:


说明: 原生JS如果返回的对象不存在则浏览器会报错,如果加if判断会增加代码量,而jQuery中$(‘selector’)返回的永远是封装后的jQuery对象,因此不能直接if判断,也不需要if判断,如果非要去判断的话可通过判断$(‘selector’).length属性是否大于0或$(‘selector’)[0]转换为DOM对象(其实是调用的$(‘selector’).toArray()转换为DOM对象数组然后再取指定DOM对象的)判断对象是否存在



    
        
        前端开发
    
    
    
    
    
        // 方式一: 通过判断其length属性
        if ($("body").length > 0){
            alert("存在")
        } 
        // 方式二: 转换为DOM对象判断是否存在
        if ($('body')[0]){
            alert("存在")
        }
    

JQ选择器:



    
        
        前端开发
        
            div, span, p {
                width: 200px;
                height: 200px;
                margin: 5px;
                background: #aaa;
                border: #000 1px solid;
                float: left;
                font-size: 17px;
            }
            div.mini {
                width: 66px;
                height: 66px;
                background-color: #aaa;
                font-size: 12px;
            }
            div.hide {
                display: none;
            }
        
    
    
        

just for test

id为one,class为one的div
class为mini的div
id为two,class为one,title为test的div
class为mini,title为other的div
class为mini,title为test的div
class为one的div
class为mini的div
class为mini的div
class为mini的div
class为one的div
class为mini的div
class为mini的div
class为mini的div
class为mini,title为test的div
style的display为"none"的div
class为"hide"的div
包含input的type为"hidden"的div
正在执行动画的span

# 基本选择器

说明: 基本选择器包括元素选择器/ID选择器/类选择器/通用选择器/分组选择器.



    // 改变id为one的元素背景颜色为#bbffaa
    $("#one").css("background-color", "#bbffaa")
    // 改变class为mini的元素的背景颜色为#bbffaa
    $(".mini").css("background-color", "#bbffaa")
    // 改变所有div元素的背景颜色为#bbffaa
    $("div").css("background-color", "#bbffaa")
    // 改变所有元素的背景颜色为#bbffaa
    $("*").css("background-color", "#bbffaa")
    // 改变所有span和id为two的元素的背景颜色为#bbffaa
    $("span, #two").css("background-color", "#bbffaa")

# 层次选择器

说明: 层次选择器包括子选择器/后代选择器/兄弟选择器/后续选择器.


    // 改变body里面所有div元素的背景颜色为#bbffaa
    $("body div").css("background-color", "#bbffaa")
    // 改变body内第一层同级div元素的背景颜色为#bbffaa
    $("body>div").css("background-color", "#bbffaa")
    // 改变class为one的后面第一个同级div的背景颜色为#bbffaa
    $(".one + div").css("background-color", "#bbffaa")
    // 改变id为two后面所有div元素的背景颜色为#bbffaa
    $("#two ~ div").css("background-color", "#bbffaa")

扩展: 在层次选择器中子选择器和后代选择器比较常用,而兄弟选择器和后续选择器在jQuery中可以用更简单的方法代替,兄弟选择器可通过.next(“selector”)代替,而后续选择器可通过.nextAll(“selector”)代替,需要注意的是.next(“selector”)和.nextAll(“selector”)都是基于同级的,还有一个基于同级但是不论前后的兄弟元素获取方法是.siblings(“selector”)

# 过滤选择器

说明: 过滤选择器包括基本过滤选择器/内容过滤选择器/可见性过滤选择器/属性过滤选择器/子元素过滤选择器/表单属性过滤选择器.


    // 基本过滤选择器
    // 改变第一个div元素的背景色为#bbffaa
    $("div:first").css("background-color", "#bbffaa")
    // 改变最后一个div元素的背景色为#bbffaa
    $("div:last").css("background-color", "#bbffaa")
    // 改变class不为one的元素的背景色为#bbffaa
    $("div:not(.one)").css("background-color", "#bbffaa")
    // 改变索引为偶数的元素的背景颜色为#bbffaa
    $("div:even").css("background-color", "#bbffaa")
    // 改变索引为奇数的元素的背景颜色为#bbffaa
    $("div:odd").css("background-color", "#bbffaa")
    // 改变索引等于某值元素的背景颜色为#bbffaa
    $("div:eq(0)").css("background-color", "#bbffaa")
    // 改变索引大于某值的元素的背景颜色为#bbffaa
    $("div:gt(0)").css("background-color", "#bbffaa")
    // 改变索引小于某值的元素的背景颜色为#bbffaa
    $("div:lt(1)").css("background-color", "#bbffaa")
    // 改变所有的标题元素(h1~h6)的背景颜色为#bbffaa
    $(":header").css("background-color", "#bbffaa")
    // 改变所有正在执行动画的元素的背景颜色为#bbffaa
    $(":animated").css("background-color", "#bbffaa")
    
    // 内容过滤选择器
    // 设置包含文本内容为某值的元素背景色为#bbffaa
    $("div:contains(为)").css("background-color", "#bbffaa")
    // 设置不包含任何子元素或文本内容的元素背景色为#bbffaa
    $("div:empty").css("background-color", "#bbffaa")
    // 设置包含指定选择器的元素的元素背景色为#bbffaa
    $("div:has(div)").css("background-color", "#bbffaa")
    // 设置包含有子元素或文本的元素的背景色为#bbffaa(和empty相反)
    $("div:parent").css("background-color", "#bbffaa")
    
    // 可见过滤选择器
    // 设置所有不可见元素显示
    $("div:hidden").show(3000)
    // 设置所有可见div元素背景色设置为#bbffaa
    $("div:visible").css("background-color", "#bbffaa")
    
    // 属性过滤选择器
    // 设置含有title属性元素的背景色为#bbffaa
    $("[title]").css("background-color", "#bbffaa")
    // 设置title属性值等于test的元素背景色为#bbffaa
    // $("[title=test]").css("background-color", "#bbffaa")
    // 设置title属性值不等于test的元素背景色为#bbffaa
    $("[title!=test]").css("background-color", "#bbffaa")
    // 设置title属性值以te开头的元素背景色为#bbffaa
    $("[title^=te]").css("background-color", "#bbffaa")
    // 设置title属性值以st结尾的元素背景色为#bbffaa
    $("[title$=st]").css("background-color", "#bbffaa")
    // 设置title属性值中含有es的元素背景色为#bbffaa
    $("[title*=es]").css("background-color", "#bbffaa")
    // 设置包含id属性且title属性值为test的元素的背景色为"#bbffaa"
    $("[id][title=test]").css("background-color", "#bbffaaa")
    
    // 子元素过滤选择器
    // 设置class为one的div下的第一个子元素背景色为#bbffaa
    $("div.one :first-child").css("background-color", "#bbffaa")
    // 设置class为one的div下的最后一个子元素背景色为#bbffaa
    $("div.one :last-child").css("background-color", "#bbffaa")
    // 设置class为one的div下只有一个子元素的元素背景色为#bbffaa
    $("div.one :only-child").css("background-color", "#bbffaa")
    // 设置每个元素下的第index个子元素或偶数或奇数元素的背景色为#bbffaa
    $("div.one :nth-child(odd)").css("background-color", "#bbffaa")

说明: 在可见性过滤选择器中,:hidden不仅包括样式属性display:none的元素,也包括文本隐藏域和visible:hidden之类的元素,在子元素过滤选择器中,:nth-child将为每一个符合条件的父元素匹配子元素,但需要注意的是索引是从1开始,而:eq的索引从0开始,同理:first和:first-child,:last和:last-child类似

# 表单选择器

说明: 表单选择器包括表单对象属性过滤选择器和扩展表单过滤选择器.


    // 表单对象属性过滤选择器
    // 设置id为form1的表单下的可用元素的值为你改变了~
    $("#form1 input:enabled").val("你改变了~")
    // 设置id为form1的表单下的不可用元素的值为你改变了~
    $("#form1 input:disabled").val("你改变了~")
    // 获取多选框中选中的个数并显示在div中
    $("div:first").html($("input:checked").length + "个被选中!").css({
        "color": "red",
        "font-weight": "border"
    })
    // 获取多选下拉列表中被选中的个数并显示在div中
    $("div:eq(1)").html($("select:first [selected=selected]").length + "个被选中").css({
        "color": "red",
        "font-weight": "border"
    })
    // 获取单选下拉框中被选中的值并显示在div中
    $("div:last").html($("select:last [selected=selected]").text() + "被选中").css({
        "color": "red",
        "font-weight": "border"
    })
    // 表单选择器
    // :input可匹配/