Html学习5-1_jQuery

jQuery学习

一、简介

事实上jQuery就是一个JavaScript的函数库,同样的实现方式用jQuery明显比JavaScript要简单,jQuery主要有 HTML元素选取,元素操作,CSS操作,HTML事件函数,JavaScript特效和动画,HTML DOM遍历和修改,AJAX,Utilities还有大量的插件。

jQuery是目前最流行的JavaScript框架,主流浏览器都可以兼容

二、jQuery特点

  1. 使用jQuery一半都有函数入口
  2. $ 符的意义其实就是函数名 它和 jqueru 具有一样的意义
  3. jQuery - 链(Chaining), Chaining 允许我们在一条语句中运行多个 jQuery 方法(在相同的元素上)。
  4. 几乎都是方法,都要带括号

三、使用的注意事项

遇到过的一点点需要注意的地方

  1. 我自己所使用的ide没有jQuery代码补全的功能,所以在刚开始学习使用的时候经常碰到拼写错误 $("#id").css("color","red");" " 中的单词拼写错误是没有提示的,运行网页的时候不会报错,反正就是没有效果。所以以后使用的时候如果出错,要考虑到拼写错误,切记切记!

  2. jQuery的事件冒泡,简单点描述问题就是,如果给一个div元素和div下面的button子元素同时绑定事件,那么点击按钮的时候会同时触发div上的事件

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>jQuery</title>
        <style>
            #outer{width:400px;height:200px;background-color: #ddd;margin:50px;padding:20px;}
        </style>
    </head>
    <body>
        <h1 id="hid">jQuery事件冒泡</h1>
        <div id="outer">
            <button id="inner">点我</button>
        </div>
        <script src="./jquery-3.5.0.min.js"></script>
        <script>
            $(function(){
                //获取div层并绑定点击事件
                $("#outer").click(function(){
                    console.log("outer.....");
                });
                $("#inner").click(function(e){
                    console.log("inner.....");
                    
                    //阻止事件冒泡(传播)
                    //e.stopPropagation();
                });
            });
        </script>
    </body>
    </html>
    

    在这个例子中会出现点击按钮的时候也触发了div层的事件,可以理解为点击效果传递下去了,如果外面再嵌套一个div也会再触发第三个,这就是事件冒泡的现象,原理不多赘述

    解决方法就是 e.stopPropagation(); 阻止事件冒泡,在原生JavaScript 种有类似的方法,都可以实现阻止事件冒泡

  3. jQuery封装的几乎都是方法,在使用的时候都要记得带上括号

  4. 还有一个版本问题

    • 1.X版本: 支持 ie6ie7ie8 ,版本不向后兼容,插件支持较好
    • 2.X版本: 不支持 ie6ie7ie8 ,插件支持不好
    • 3.X版本: 不支持 ie6ie7ie8 ,插件支持不好,新特性,移除了一些方法
  5. jQuery函数入口,JavaScript也有函数入口,函数入口的目的就是等页面资源都加载之后才执行JavaScript的操作,如非如此结果很容易想到

    //原生JavaScript写法
    //所有的文件资源加载完成后,才执行
    window.onload = function () {
    	//do something
    }
    
    //jQuery写法
    //1.文档加载完毕,图片等外部资源不加载的时候,就可以执行
    $(document).ready(function () {
        //do something
    });
    
    //2.文档加载完毕,图片等外部资源不加载的时候,就可以执行
    $(function () {
        //do something
    });
    
    //3.文档加载完毕,外部资源也加载完毕的时候,再执行这个函数。
    $(window).ready(function () {
        //do something
    });
    

    入口函数在原生JavaScript只能出现一次,重复出现会覆盖事件,jQuery中可以出现多次,不会覆盖事件

  6. 选择器用法示例 来源:

    选择器实例选取
    *$("*")所有元素
    #id$("#lastname")id=“lastname” 的元素
    .class$(".intro")class=“intro” 的所有元素
    .class,.class$(".intro,.demo")class 为 “intro” 或 “demo” 的所有元素
    element$(“p”)所有 <p> 元素
    el1,el2,el3$(“h1,div,p”)所有 <h1>、<div> 和 <p> 元素
    :first$(“p:first”)第一个 <p> 元素
    :last$(“p:last”)最后一个 <p> 元素
    :even$(“tr:even”)所有偶数 <tr> 元素,索引值从 0 开始,第一个元素是偶数 (0),第二个元素是奇数 (1),以此类推。
    :odd$(“tr:odd”)所有奇数 <tr> 元素,索引值从 0 开始,第一个元素是偶数 (0),第二个元素是奇数 (1),以此类推。
    :first-child$(“p:first-child”)属于其父元素的第一个子元素的所有 <p> 元素
    :first-of-type$(“p:first-of-type”)属于其父元素的第一个 <p> 元素的所有 <p> 元素
    :last-child$(“p:last-child”)属于其父元素的最后一个子元素的所有 <p> 元素
    :last-of-type$(“p:last-of-type”)属于其父元素的最后一个 <p> 元素的所有 <p> 元素
    :nth-child(n)$(“p:nth-child(2)”)属于其父元素的第二个子元素的所有 <p> 元素
    :nth-last-child(n)$(“p:nth-last-child(2)”)属于其父元素的第二个子元素的所有 <p> 元素,从最后一个子元素开始计数
    :nth-of-type(n)$(“p:nth-of-type(2)”)属于其父元素的第二个 <p> 元素的所有 <p> 元素
    :nth-last-of-type(n)$(“p:nth-last-of-type(2)”)属于其父元素的第二个 <p> 元素的所有 <p> 元素,从最后一个子元素开始计数
    :only-child$(“p:only-child”)属于其父元素的唯一子元素的所有

    元素

    :only-of-type$(“p:only-of-type”)属于其父元素的特定类型的唯一子元素的所有

    元素

    parent > child$(“div > p”)<div> 元素的直接子元素的所有 <p> 元素
    parent descendant$(“div p”)<div> 元素的后代的所有 <p> 元素
    element + next$(“div + p”)每个 <div> 元素相邻的下一个 <p> 元素
    element ~ siblings$(“div ~ p”)<div> 元素同级的所有 <p> 元素
    :eq(index)$(“ul li:eq(3)”)列表中的第四个元素(index 值从 0 开始)
    :gt(no)$(“ul li:gt(3)”)列举 index 大于 3 的元素
    :lt(no)$(“ul li:lt(3)”)列举 index 小于 3 的元素
    :not(selector)$(“input:not(:empty)”)所有不为空的输入元素
    :header$(":header")所有标题元素 <h1>, <h2> …
    :animated$(":animated")所有动画元素
    :focus$(":focus")当前具有焦点的元素
    :contains(text)$(":contains(‘Hello’)")所有包含文本 “Hello” 的元素
    :has(selector)$(“div:has§”)所有包含有 <p> 元素在其内的 <div> 元素
    :empty$(":empty")所有空元素
    :parent$(":parent")匹配所有含有子元素或者文本的父元素。
    :hidden$(“p:hidden”)所有隐藏的 <p> 元素
    :visible$(“table:visible”)所有可见的表格
    :root$(":root")文档的根元素
    :lang(language)$(“p:lang(de)”)所有 lang 属性值为 “de” 的 <p> 元素
    [attribute]$("[href]")所有带有 href 属性的元素
    [attribute=value]$("[href=‘default.htm’]")所有带有 href 属性且值等于 “default.htm” 的元素
    [attribute!=value]$("[href!=‘default.htm’]")所有带有 href 属性且值不等于 “default.htm” 的元素
    [attribute$=value]$("[href$=’.jpg’]")所有带有 href 属性且值以 “.jpg” 结尾的元素
    [attribute|=value]$("[title|=‘Tomorrow’]")所有带有 title 属性且值等于 ‘Tomorrow’ 或者以 ‘Tomorrow’ 后跟连接符作为开头的字符串
    [attribute^=value]$("[title^=‘Tom’]")所有带有 title 属性且值以 “Tom” 开头的元素
    [attribute~=value]$("[title~=‘hello’]")所有带有 title 属性且值包含单词 “hello” 的元素
    [attribute*=value]$("[title*=‘hello’]")所有带有 title 属性且值包含字符串 “hello” 的元素
    [name=value][name2=value2]$( “input[id][name$=‘man’]” )带有 id 属性,并且 name 属性以 man 结尾的输入框
    :input$(":input")所有 input 元素
    :text$(":text")所有带有 type=“text” 的 input 元素
    :password$(":password")所有带有 type=“password” 的 input 元素
    :radio$(":radio")所有带有 type=“radio” 的 input 元素
    :checkbox$(":checkbox")所有带有 type=“checkbox” 的 input 元素
    :submit$(":submit")所有带有 type=“submit” 的 input 元素
    :reset$(":reset")所有带有 type=“reset” 的 input 元素
    :button$(":button")所有带有 type=“button” 的 input 元素
    :image$(":image")所有带有 type=“image” 的 input 元素
    :file$(":file")所有带有 type=“file” 的 input 元素
    :enable$(":enabled")所有启用的元素
    :disabled$(":disabled")所有禁用的元素
    :selected$(":selected")所有选定的下拉列表元素
    :checked$(":checked")所有选中的复选框选项
    .selector$(selector).selector在jQuery 1.7中已经不被赞成使用。返回传给jQuery()的原始选择器
    :target$( “p:target” )选择器将选中ID和URI中一个格式化的标识符相匹配的<p>元素

四、选择元素

4.1 选择元素方式的对比以及转化
<body>
    <div></div>
    <div id="myid"></div>
    <div class="box"></div>
    <div class="box"></div>
    <div></div>
</body>

<script>
    var myid = document.getElementById("myid");           //通过 id 获取单个元素
    var tempcls = document.getElementsByClassName("box");  //通过 class 获取的是伪数组
    var testcls = document.getElementsByTagName("div");    //通过标签获取的是伪数组
    
    //通过jQuery获取的是都是数组,其中包含着原生 JS 中的DOM对象。
  console.log($('#myid'));//也是数组,只有一个元素,用[0]可以获取
  console.log($('.box'));
  console.log($('div'));
    
    //jQuery对象转化为DOM对象,两种方法
    $('#myid')[0].style.backgroundColor = 'blue';//方式一
    $('.box').get(1).style.backgroundColor = 'red';//方式二
</script>
4.2 层级选择器
//1.获取ul中所有子元素节点li(包括后代节点)
$("ul li");
            
//2.获取ul中所有直接子元素节点li(包括后代节点)
$("ul>li");
$("ul>li");

//3.获取ul同级紧邻后面的第一个兄弟节点li
$("ul+li");

//4.获取ul后面所有同级兄弟li元素节点
$("ul~li")
4.3 基本筛选器
//获取所有li节点
$("li");

//获取第一个li节点
$("li:first");

//获取最后一个li节点
$("li:last");

//获取偶数索引号对应的所有li节点
$("li:even");

//获取奇数索引号对应的所有li节点
$("li:odd");

//获取class属性值为cc的所有li节点
$("li.cc");

//获取class属性值不为cc的所有li节点
$("li:not(.cc)");

//获取索引位置为2的li节点
$("li:eq(2)");

//获取前2个li节点
$("li:lt(2)");
4.4 内容选择器
//获取div元素中内容有"John"的内容
$("div:contains('John')");
4.5 属性选择器
//获取所有含有value属性的input元素标签
$("input[value]");

//获取name属性值为phone的input元素标签
$("input[name='phone']");

//获取name属性值不为phone的input元素标签
$("input[name!='phone']");

//获取name属性值是以a字符开头的所有input元素标签
$("input[name^='a']");

//获取name属性值是以e字符结尾的所有input元素标签
$("input[name$='e']");

//获取name属性值中含有m字符的所有input元素标签
$("input[name*='m']");
4.6 子元素选择器
//获取每组ul中的第一个li节点
$("ul li:first-child");

//获取每组ul中的最后一个li节点
$("ul li:last-child");

//获取每组ul中的第三个li节点
$("ul li:nth-child(3)");
4.7 表单选择器
<body>
    <ul>
        <li><input type="checkbox" name="likes[]" value="1"/> aaaaaaa</li>
        <li><input type="checkbox" name="likes[]" value="2"/> bbbbbbb</li>
        <li><input type="checkbox" name="likes[]" value="3"/> ccccccc</li>
        <li><input type="checkbox" name="likes[]" value="4"/> ddddddd</li>
        <li><input type="checkbox" name="likes[]" value="5"/> eeeeeee</li>
    </ul>
   <button onclick="doFun()">获取</button>

    <script src="./jquery-3.5.0.min.js"></script>
    <script>
        function doFun(){
            //获取li元素节点(条件是里面的多选框必须选中),并设置样式
            $("li:has(input:checked)").css("color","red");
        }
    </script>
</body>

JavaScript的基础上封装的选择器使用起来比较简单也是略微复杂的地方,以他的事件,动画效果,文档处理等都没有太大的难点,对照使用手册可以轻松使用

五、常见的jQuery方法和原生JavaScript的对比

序号jQueryJavaScript描述
1$(document).ready();
$(function(){});等方法
window.onload();加载DOM
2$(’#idName’)document.getElementById(‘idName’);根据id选择元素
3$(’.className’)document.getElementsByClassName(‘className’);根据class选择
4$(‘tagName’)document.getElementsByTagName(‘tagName’);根据TagName选择
5(’<b>Hello!</b>’);document.createElement(‘p’);创建元素
6$(‘p’).append((’<b>Hello!</b>’));document.body.appendElement(para);添加元素
7$(‘p’).after(’<b>Hello!</b>’);parentElement.insertBefore(newElement,targetElement)插入元素
8clone();/clone(true);//通常和appendTo()一起使用node.cloneNode(deep);复制节点
9$(‘ul li’).remove(li[title!=‘Hello’]);//删除节点
empty();//清空节点
element.removeChild(node)删除节点
10$(‘p’) .replaceWith(’<h2>Hi</h2>’);
$(’<h2>Hi</h2>’).replaceAll(‘p’);
element.replaceChild(newChild,oldChild)替换节点
11$(‘p’).attr(‘name’,‘value’);setAttribute(“name”,“value”);属性获取
12$(‘p’).removeAttr(“name”);removeAttribute(“name”);属性设置
13$(‘p’).attr(“name”);getAttribute(“name”);属性删除
$(‘p’).css(‘style’,‘value’);element.style.property设置属性
15$(‘p’).addClass(“test”);element.classList.add(“test”);添加类信息
$(‘p’).removeClass(“test”);element.classList.remove(“test”);删除类信息
17$(‘p’).html(“test”);element.innerHTML = “test”;改变元素内容
18$(‘p’).hide();
$(‘p’).show();
element.style.display = “none”;
element.style.display = “block”;
显示和隐藏元素
19$(‘p’).toggle();元素切换(显示加隐藏)
20$(‘p’).val(“test”);element.value = “test”;表单赋值
alert($(‘p’).val());alert(element.value);获取表单值

未全部归纳

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值