zoukankan      html  css  js  c++  java
  • 常规选择器——简单选择器

       jQuery最核心的组成部分就是:选择器引擎。它继承了CSS的语法,可以对DOM元素的标签名属性名状态(?)等进行快速准确的选择,并且不必担心浏览器的兼容性。jQuery选择器实现了CSS1~CSS3的大部分规则之外,还实现了一些自定义的选择器,用于各种特殊状态的选择。

       简单选择器

       在使用jQuery选择器时,我们首先必须使用“$()”函数来包装我们的CSS规则。而CSS规则作为参数传递到jQuery对象内部后,再返回包含页面中对应元素的jQuery对象。随后,我们就可以对这个获取到的DOM节点进行行为操作了。

       常规选择器.html:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>常规选择器</title>
        <script type="text/javascript" src="jquery-1.12.3.js"></script>
        <script type="text/javascript" src="demo.js"></script>
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
        <div id="box">
            常规选择器
        </div>
    </body>
    </html>

       使用ID选择器的CSS规则:

    #box {
        color: red; //添加样式-将ID为box的元素字体颜色变红
    }

       在jQuery选择器(ID选择器)里,我们使用如下的方式获取同样的结果:

    $("#box").css("color", "blue");//添加一个行为,这个行为是添加样式

       那么除了ID选择器之外,还有两种基本的选择器,分别为:元素标签名和类(class):

    选择器 CSS模式 jQuery模式 描述
    元素名 div {} $("div") 获取所有div元素的DOM对象
    ID #box {} $("#box") 获取一个ID为box元素的DOM对象
    类(class) .box {} $(".box") 获取所有class为box的所有DOM对象

       举例说明:

       常规选择器.html:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>常规选择器</title>
        <script type="text/javascript" src="jquery-1.12.3.js"></script>
        <script type="text/javascript" src="ye_demo.js"></script>
        <link rel="stylesheet" type="text/css" href="ye_style.css">
    </head>
    <body>
        <div class="pox">常规选择器</div>
        <div class="pox">常规选择器</div>
        <div class="pox">常规选择器</div>
    </body>
    </html>

       CSS规则:

    div {
        color: orange;
    }

       在jQuery选择器(元素名选择器)里,我们使用如下的方式获取同样的结果:

    $("div").css("color", "maroon");

       又如CSS规则:

    .pox {
        color: red;
    }

       在jQuery选择器(类选择器)里,我们使用如下的方式获取同样的结果:

    $(".pox").css("color", "green");

       为了证明ID返回的是单个元素,而元素标签名和类(class)返回的是多个,我们可以采用jQuery核心自带的一个属性length或size()方法来查看返回的元素个数。

       如,html代码如下:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>常规选择器</title>
        <script type="text/javascript" src="jquery-1.12.3.js"></script>
        <script type="text/javascript" src="ye_demo.js"></script>
        <link rel="stylesheet" type="text/css" href="ye_style.css">
    </head>
    <body>
        <div class="pox">常规选择器</div>
        <div class="pox">常规选择器</div>
        <div class="pox">常规选择器</div>
    </body>
    </html>
    alert($(".pox").size()); //3
    alert($("div").size()); //3

       当html代码变成如下时:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>常规选择器</title>
        <script type="text/javascript" src="jquery-1.12.3.js"></script>
        <script type="text/javascript" src="ye_demo.js"></script>
        <link rel="stylesheet" type="text/css" href="ye_style.css">
    </head>
    <body>
        <div id="pox">常规选择器</div>
        <div id="pox">常规选择器</div>
        <div id="pox">常规选择器</div>
    </body>
    </html>
    alert($("#pox").size()); //1,后面2个失明了

       同理,你也可以直接使用jQuery核心属性来操作:

    alert($("#pox").length); //1,后面2个失明了

       警告:有个问题特别要注意,ID在页面只允许出现一次,我们一般都是要求开发者要遵守和保持这个规则。但如果你在页面中出现三次,并且在CSS使用样式,那么这三个元
    素还会执行效果。但如果,你想在jQuery这么去做,那么就会遇到失明的问题。所以,开发者必须养成良好的遵守习惯,在一个页面仅使用一个ID。

       要使第二个<div>元素的字体颜色为红色,那么

    $("div").eq(1).css("color", "red");

       jQuery选择器的写法与CSS选择器十分类似,只不过他们的功能不同。CSS找到元素后添加的是单一的样式,而jQuery则添加的是动作行为。最重要的一点是:CSS在添加样式的时候,高级选择器会对部分浏览器不兼容,而jQuery选择器在添加CSS样式的时候却不必为此烦恼。

       例,html代码如下:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>常规选择器</title>
        <script type="text/javascript" src="jquery-1.12.3.js"></script>
        <script type="text/javascript" src="ye_demo.js"></script>
        <link rel="stylesheet" type="text/css" href="ye_style.css">
    </head>
    <body>
        <div id="box">
            <p>常规选择器</p>
            <p>常规选择器</p>
            <p>常规选择器</p>
            <div>
                <p>常规选择器</p>
                <p>常规选择器</p>
                <p>常规选择器</p>
            </div>
        </div>
    </body>
    </html>

       CSS规则如下:(高级选择器)

    #box > p {
        color: red; //CSS子选择器,IE6不支持
    }

       但是

    $("#box > p").css("color", "red");//jQuery子选择器,兼容了IE6

       jQuery选择器支持CSS1、CSS2的全部规则,支持CSS3部分实用的规则,同时它还有少量独有的规则。所以,对于已经掌握CSS的开发人员,学习jQuery选择器几乎是零成本。而jQuery选择器在获取节点对象的时候不但简单,还内置了容错功能,这样避免像JavaScript那样每次对节点的获取需要进行有效判断。

       如:

    $("#pox").css("color", "red"); //不存在ID为pox的元素,也不报错
    document.getElementById("pox").style.color = "red"; //由于不存在ID为pox的元素,所以报错

       因为jQuery内部进行了判断,而原生的DOM节点获取方法并没有进行判断,所以导致了一个错误,原生方法可以这么判断解决这个问题:

    if(document.getElementById("pox")) { //先判断是否存在这个对象
        document.getElementById("pox").style.color = "red";
    }

       那么对于缺失不存在的元素,我们使用jQuery调用的话,怎么去判断是否存在呢?因为本身返回的是jQuery对象,可能会导致不存在元素存在与否,都会返回true。很多情况下有动态DOM生成的问题,会导致执行不存在的ID选择器

    if($("#pox").size() > 0) { //判断元素包含数量即可
        $("#pox").css("color", "red");
    }

       除了这种方式之外,还可以用转换为DOM对象的方式来判断,例如:

    if($("#pox").get(0)) {
        ...
    }

       或者

    if($("#pox")[0]) { //通过数组下标也可以获取DOM对象
        ...
    }
  • 相关阅读:
    全栈的苦逼和崛起
    Swift内部类调用外部类方法、属性的变通
    Assets.xcassets误删后的恢复
    UITableViewCell嵌套UITableView的正确姿势
    GPU Accelerated Computing with Python
    Windows 10创意者更新ISO发布!官方下载
    Amazing iOS Tips
    self-sizing cell的一个问题
    buf.swap32()
    buf.swap16()
  • 原文地址:https://www.cnblogs.com/yerenyuan/p/5409224.html
Copyright © 2011-2022 走看看