草庐IT

day28-jQuery01

liyuelian 2023-03-28 原文

jQuery01

参考文档1:jQuery API 中文文档 | jQuery API 中文在线手册 | jquery api 下载 | jquery api chm (cuishifeng.cn)

参考文档2:jQuery 教程 (w3school.com.cn)jQuery 教程 | 菜鸟教程 (runoob.com)

1.什么是 jQuery ?

jQuery 是一个 JavaScript 函数库

jQuery 是一个轻量级的"WRITE LESS,DO MORE"的 JavaScript 库。

jQuery 库包含以下功能:

  • HTML 元素选取
  • HTML 元素操作
  • CSS 操作
  • HTML 事件函数
  • JavaScript 特效和动画
  • HTML DOM 遍历和修改
  • AJAX
  • Utilities
  • 实现了浏览器的兼容问题

除此之外,jQuery 还提供了大量的插件。

  • jQuery的原理示意图

2.jQuery的基本开发步骤

  1. 下载jQuery:点击下载,在弹出的页面右击另存为js文件即可

    下载链接:Download jQuery

    说明:带有compressed的是压缩过的,uncompressd是没有压缩过得,第一个即可。

  2. 使用标签script引入jQuery库文件,即可使用jQuery相关的函数和对象。

2.1jQuery快速入门

  1. 需求:点击按钮,弹出“hello,jQuery”
  2. 使用传统的dom编程/原生js,完成
  3. 使用jQuery完成,体会jQuery的WRITE LESS,DO MORE
  4. 使用两种方式的代码完成,体会两种方式的不同
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery快速入门</title>
    <!--    引入jquery库-->
    <script type="text/javascript" src="script/jquery-3.6.1.min.js"></script>
    <script type="text/javascript">
        /**
         *使用dom编程
         * 1.代码比较麻烦
         * 2.document.getElementById("btn01")返回dom对象
         */
        //使用原生js+dom完成
        //当页面加载完毕后,就执行function
        // window.onload=function () {
        //     //1.先得到btn01的dom对象
        //     var btn01 = document.getElementById("btn01");
        //     //2.绑定点击事件
        //     btn01.onclick=function () {
        //         alert("hello,js")
        //     }
        // }

        //使用jquery完成
        //1.先引入jQuery文件
        //2.${function(){}} 等价于原生js的window.onload=function () {}
        //  即当页面加载完毕,就会执行function(){}
        $(function () {
            //1.先得到btn01这个对象(这里是jquery对象)
            //$btn01是一个jquery对象,其实就是对dom对象的一个包装
            //这时我们就可以使用jquery对象的方法,事件等
            //通过debug,我们可以发现jquery对象是数组对象
            //2.jquery中获取对象的方法是$("#id"),必须在id前有#号
            //3.在编程中,规定jquery对象的命名以$开头。非必须,但是约定
            var $btn01 = $("#btn01");
            //3.绑定事件
            $btn01.click(function () {
                alert("hello,jquery")
            })
        });

    </script>
</head>
<body>
<button id="btn01">按钮1</button>
</body>
</html>

3.jQuery对象和DOM对象

3.1什么是jQuery对象

什么是jQuery对象:

  1. jQuery对象就是对dom对象进行包装后产生的对象

    比如:$("test").html()意思是指:获取ID为test的元素内的html代码。其中html()是jQuery里的方法。这端代码等同于用dom实现代码document.getElementById("id").innerHTML;

  2. jQuery对象是jQuery独有的。如果一个对象是jQuery对象,那么它就可以使用jQuery里面的方法

  3. 约定:如果获取的是jQuery对象,那么要在变量前面加上$

    比如var $variable=jQuery对象var variable=DOM对象

3.2DOM对象转成jQuery对象

  1. 对于一个DOM对象,只需要用\(()把dom对象包装起来,就可以得到一个jquery对象了。`\)(DOM对象)`
  2. DOM对象转成jQuery对象后,就可以使用jquery的方法了

应用实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DOM对象转成jQuery对象</title>
    <script type="text/javascript" src="./script/jquery-3.6.1.min.js"></script>
    <script type="text/javascript">
        window.onload = function () {
            //演示通过dom获取输入框的value
            var username = document.getElementById("username");
            alert("username value= " + username.value)
            //通过jquery对象来获取输入框的value
            //把username dom对象转成jquery对象
            var $username = $(username);
            //使用jquery的方法,来获取value
            alert("$username value= " + $username.val())
        }
    </script>
</head>
<body>
用户名:<input type="text" id="username" name="username" value="一只小猫"/>
</body>
</html>

3.3jQuery对象转成DOM对象

  1. 两种转换方式将一个jQuery对象转换成dom对象:[index].get(index);

  2. jQuery对象是一个数组对象,可以通过数组[index]的方法,得到其中某一个它封装的dom对象

  3. jQuery本身提供通过.get(index)方法,得到对象的dom对象

应用实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery对象转成DOM对象</title>
    <script type="text/javascript" src="./script/jquery-3.6.1.min.js"></script>
    <script type="text/javascript">
        window.onload = function () {
            //得到一个jquery对象
            var $username = $("#username");
            alert("$username value= " + $username.val())

            //把jquery对象-->dom对象
            //1.jquery是一个数组对象,封装了dom对象
            // 2.可以通过[index]或者.get(index)方法来来获取
            //3.一般来说index是0
            //方式一
            var username = $username[0];
            alert(username)//[object HTMLInputElement]
            //获取原生dom对象的值
            alert("username value= " + username.value)

            //方式二
            //提醒,在练习中,输出的提示信息尽量不同
            var username1 = $username.get(0);
            alert("username1 value~~~= " + username1.value)
        }
    </script>
</head>
<body>
用户名:<input type="text" id="username" name="username" value="一只小猫"/>
</body>
</html>

4.jQuery选择器

  • jQuery选择器介绍

https://www.w3school.com.cn/jquery/jquery_selectors.asp

  1. 选择器是jQuery的核心,在jQuery中,对事件处理,遍历dom和ajax操作都依赖于选择器

  2. jQuery选择器的优点

    • 简洁的写法

      $("#id")等价于document.getElementById("id");

      $("tagName")等价于document.getElementsByTagName("tagName");

    • 完善的处理机制

应用实例-jQuery选择器使用特点

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery选择器使用特点</title>
    <script type="text/javascript" src="./script/jquery-3.6.1.min.js"></script>
    <script type="text/javascript">
        window.onload = function () {
            //var username = document.getElementById("username");
            //alert(username.value);//这里在控制台会抛出一个错误,后面的程序无法执行

            //如果是jQuery对象,获取的value
            //如果没有获取到,调用val()时,并不会报错,后面的程序可以执行
            var $username = $("#username");
            alert($username.val())//这里不会报错,会提示undefined
        }
    </script>
</head>
<body>
用户名:<input type="text" id="username##"
           name="username" value="一只小猫"/>
</body>
</html>

4.1jQuery基本选择器

基本选择器是jQuery中最常见的选择器,也是最简单的选择器,它通过元素id,class和标签名来查找dom元素

$("#id")            //ID选择器
$("div")            //元素选择器
$(".classname")     //类选择器
$(".classname,.classname1,#id1")     //组合选择器
  1. #id -id选择器,用法:$("#myDiv"); ,返回值:单个元素的组成的集合

    说明:这个就是直接选择html中的id=“myDiv”

  2. Element -元素选择器,用法:$("div"),返回值:集合元素

    说明:element意为“元素”,element其实就是html已经定义的标签元素,例如div,input,a等等

  3. class -类选择器,用法:$(".myClass"),返回值:集合元素

    说明:这个标签是直接选择html代码中的class=“myClass”的元素或者元素组(因为在同一html页面中class是可以存在多个同样值的)

  4. *,用法:$("*"),返回值:集合元素

    说明:匹配所有元素,多用于结合上下文来搜索

  5. selector1,selector2,selectorN -组合选择器,用法:$("div,span,p.myClass"),返回值:集合元素。说明:将每一个选择器匹配到的元素合并后一起返回。你可以任意指定多个选择器,并将匹配到的元素合并到一个结果内。其中p.myClass是表示匹配元素 p class=“myClass”

基本选择器应用实例

  1. 改变id为one的元素的背景色为#0000FF
  2. 改变class为mini的所有元素的背景色为#FF0033
  3. 改变元素名为< div>的所有元素的背景色为#00FFFF
  4. 改变所有元素的背景色为#00FF33
  5. 改变所有的< span>元素和id为two,class为.mini 的元素的背景色为 #3399FF
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>基本选择器应用实例</title>
    <style type="text/css">
        div, span {
            width: 140px;
            height: 140px;
            margin: 20px;
            background: #9999CC;
            border: #000 1px solid;
            float: left;
            font-size: 17px;
            font-family: Roman;
        }

        div.mini {
            width: 60px;
            height: 30px;
            background: #CC66FF;
            border: #000 1px solid;
            font-size: 12px;
            font-family: Roman;
        }
    </style>
    <script type="text/javascript" src="./script/jquery-3.6.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            // 1. 改变id为one的元素的背景色为#0000FF
            $("#b1").click(
                function () {
                    //css() 方法设置或返回被选元素的一个或多个样式属性
                    $("#one").css("background", "#0000FF");
                })
            // 2. 改变class为mini的所有元素的背景色为#FF0033
            $("#b2").click(
                function () {
                    $(".mini").css("background", "#FF0033");
                }
            )
            // 3. 改变元素名为<div>的所有元素的背景色为#00FFFF
            $("#b3").click(
                function () {
                    $("div").css("background", "#00FFFF");
                })
            // 4. 改变所有元素的背景色为#00FF33
            $("#b4").click(
                function () {
                    $("*").css("background", "#00FF33");
                })
            // 5. 改变所有的<span>元素和id为two,class为.mini的元素的背景色为 #3399FF
            $("#b5").click(
                function () {
                    $("span,#two,.mini").css("background", "#3399FF");
                })
        })
    </script>
</head>
<body>
<input type="button" value="改变 id 为 one 的元素的背景色为 #0000FF" id="b1"/>
<input type="button" value="改变 class 为 mini 的所有元素的背景色为 #FF0033" id="b2"/>
<input type="button" value="改变元素名为<div>的所有元素的背景色为#00FFFF" id="b3"/>
<input type="button" value=" 改变所有元素的背景色为 #00FF33" id="b4"/>
<input type="button" value=" 改变所有的<span>元素和 id 为 two class 为 .mini 的元素的背景色为 #3399FF" id="b5"/>
<hr/>
<div id="one" class="mini">div id 为 one</div>
<div id="two">div id 为 two</div>
<div id="three" class="mini">div id 为 three</div>
<span id="s_one" class="mini">span one</span>
<span id="s_two">span two</span>
</body>
</html>

4.2层次选择器

$("#id >.classname ")    //子元素选择器
$("#id .classname ")    //后代元素选择器
$("#id + .classname ")    //紧邻下一个元素选择器
$("#id ~ .classname ")    //兄弟元素选择器

如果想通过dom元素之间的层次关系来获取特定元素,例如后代元素,子元素,相邻元素,兄弟元素等,则需要使用层次选择器。

  1. ancestor descendant(祖先 后代)

    用法: $("body input");,返回值:集合元素
    说明: 在给定的祖先元素下匹配所有后代元素

  2. parent > child
    用法: $("body > input");,返回值:集合元素
    说明: 在给定的父元素下匹配所有子元素,注意:要区分好后代元素与子元素

  3. prev + next

    用法: $("label + input");返回值:集合元素
    说明: 匹配所有紧接在 prev 元素后的 next 元素

  4. prev ~ siblings
    用法: $("form ~ input");,返回值:集合元素
    说明: 匹配 prev 元素之后的所有 siblings 元素

    注意:是匹配的元素的之后的元素,不包含匹配元素在内,并且 siblings 匹配的是和 prev 同辈的元素,其后辈元素不被匹配。(“prev ~ div”) 选择器只能选择 “# prev ” 元素后面的同辈元素;而 jQuery中的方法 siblings() 与前后位置无关, 只要是同辈节点就可以选取

层次选择器应用实例

  1. 改变 < body> 内所有 < div> 的背景色为 #0000FF
  2. 改变 < body> 内子 < div> 的背景色为 #FF0033
  3. 改变 id 为 one 的下一个 < div> 的背景色为 #0000FF
  4. 改变 id 为 two 的元素后面的所有兄弟< div>的元素的背景色为 #0000FF
  5. 改变 id 为 two 的元素所有兄弟< div> 元素的背景色为 #0000FF
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>层次选择器应用实例</title>
    <style type="text/css">
        div, span {
            width: 140px;
            height: 140px;
            margin: 20px;
            background: #9999CC;
            border: #000 1px solid;
            float: left;
            font-size: 17px;
            font-family: Roman;
        }

        div.mini {
            width: 80px;
            height: 30px;
            background: #CC66FF;
            border: #000 1px solid;
            font-size: 12px;
            font-family: Roman;
        }
    </style>
    <script type="text/javascript" src="./script/jquery-3.6.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            //1. 改变 <body> 内所有 <div> 的背景色为 #0000FF
            $("#b1").click(function () {
                $("body div").css("background", "#0000FF");
            })
            // 2. 改变 <body> 内子 <div> (第一层div)的背景色为 #FF0033
            $("#b2").click(function () {
                $("body > div").css("background", "#FF0033")
            })
            // 3. 改变 id 为 one 的下一个 <div> 的背景色为 #0000FF
            $("#b3").click(function () {
                $("#one + div").css("background", "#0000FF")
            })
            // 4. 改变 id 为 two 的元素 后面的所有兄弟<div> 的元素的背景色为 #0000FF
            $("#b4").click(function () {
                $("#two ~ div").css("background", "#0000FF")
            })
            // 5. 改变 id 为 two 的元素 所有兄弟<div> 元素的背景色为 #0000FF
            $("#b5").click(function () {
                $("#two").siblings("div").css("background", "#0000FF");
            })
        })
    </script>
</head>
<body>
<input type="button" value="改变 <body> 内所有 <div> 的背景色为 #0000FF" id="b1"/>
<input type="button" value="改变 <body> 内 子<div> 的背景色为#FF0033" id="b2"/>
<input type="button" value=" 改变 id 为 one 的下一个 <div> 的背景色为 #0000FF" id="b3"/>
<input type="button" value=" 改变 id 为 two 的元素后面的所有 兄弟<div> 的元素的背景色为#0000FF" id="b4"/>
<input type="button" value=" 改变 id 为 two 的元素 所有<div>兄弟元素 的背景色为#0000FF" id="b5"/>
<hr/>
<div id="one" class="mini">
    div id 为 one
</div>
<div id="two">
    div id 为 two
    <div id="two01">
        id two01
    </div>
    <div id="two02">
        id two02
    </div>
</div>
<div id="three" class="mini">
    div id 为 three
    <div id="three01">
        id three01
    </div>
</div>
</body>
</html>

有关day28-jQuery01的更多相关文章

  1. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  2. jquery - 如何将 AJAX 变量从 jQuery 传递到他们的 Controller ? - 2

    我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam

  3. ruby-on-rails - rails : Find tasks that were created on a certain day? - 2

    我有一个任务列表(名称、starts_at),我试图在每日View中显示它们(就像iCal)。deftodays_tasks(day)Task.find(:all,:conditions=>["starts_atbetween?and?",day.beginning,day.ending]end我不知道如何将Time.now(例如“2009-04-1210:00:00”)动态转换为一天的开始(和结束),以便进行比较。 最佳答案 deftodays_tasks(now=Time.now)Task.find(:all,:conditio

  4. 什么是0day漏洞?如何预防0day攻击? - 2

    什么是0day漏洞?0day漏洞,是指已经被发现,但是还未被公开,同时官方还没有相关补丁的漏洞;通俗的讲,就是除了黑客,没人知道他的存在,其往往具有很大的突发性、破坏性、致命性。0day漏洞之所以称为0day,正是因为其补丁永远晚于攻击。所以攻击者利用0day漏洞攻击的成功率极高,往往可以达到目的并全身而退,而防守方却一无所知,只有在漏洞公布之后,才后知后觉,却为时已晚。“后知后觉、反应迟钝”就是当前安全防护面对0day攻击的真实写照!为了方便大家理解,中科三方为大家梳理当前安全防护模式下,一个漏洞从发现到解决的三个时间节点:T0:此时漏洞即0day漏洞,是已经被发现,还未被公开,官方还没有相

  5. jquery - 如何在 rails 3.1 上安装 jQuery - 2

    我以为它已经安装了,但在我的gemfile中有gem"jquery-rails"但是在我的asset/javascripts文件夹中accounts.js.coffeeapplication.js都被注释掉了这是我的虚拟railsapplication但是在源代码中没有jQuery并且删除链接不起作用......任何想法都丢失了 最佳答案 看看thisRailscast.您可能需要检查application.js文件并确保它包含以下语句。//=requirejquery//=requirejquery_ujs

  6. jquery - Rails 如何创建 Jquery flash 消息而不是默认的 Rails 消息 - 2

    我想在页面顶部创建自定义Jquery消息而不是标准RailsFlash消息。我想在我的投票底部附近创建一条即时消息。我的Controller:defvote_up@post=Post.find(params[:id])current_user.up_vote(@post)flash[:message]='Thanksforvoting!'redirect_to(root_path,:notice=>'Takforditindlæg,deternuonline!')rescueMakeVoteable::Exceptions::AlreadyVotedErrorflash[:error]

  7. javascript - jQuery 的 jquery-1.10.2.min.map 正在触发 404(未找到) - 2

    我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文

  8. ruby - Rails 比较 date.end_of_day.to_datetime 和 date.to_datetime.end_of_day 返回的日期对象值时返回 false - 2

    ruby1.9.3dev(2011-09-23修订版33323)[i686-linux]轨道3.0.20最近为什么在与DateTimeonRails相关的RSpecs项目上工作我发现在给定日期以下语句发出的值date.end_of_day.to_datetime和date.to_datetime.end_of_day虽然它们表示相同的日期时间,但比较时返回false。为了确认这一点,我打开了Rails控制台并尝试了以下操作1.9.3dev:053>monday=Time.now.monday=>2013-02-2500:00:00+05301.9.3dev:054>monday.cla

  9. jquery - 在 Rails 中从原型(prototype)切换到 jquery,助手呢? - 2

    我目前从prototype切换到jquery主要是为了支持简单的ajax文件上传。我使用:https://github.com/indirect/jquery-rails95%的javascript代码是由railshelper编写的,例如:-remote_function-render:updatedo|page|-page.replace_html'id',:partial=>'content'-page['form']['name']=something-page.visual_effect:highlight,'head_success'...我知道我必须为Jquery重写5%

  10. jquery - Ruby 1.9.1、Rails 2.3.2 和 jrails 0.4 出现 "rescue in const_missing"错误 - 2

    我最近开始了一个项目,团队决定我们希望使用jQuery而不是Prototype/Scriptaculous来满足我们的javascript需求。我们设置了我们的项目,并开始切换。插件已安装viatheseinstructions,一切都按计划进行。不久之后,当尝试运行“./script/server”时,我们收到以下错误:=>Rails2.3.2applicationstartingonhttp://0.0.0.0:3000/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-2.3.2/lib/active_support/depende

随机推荐