从小白到小黑 python学习之旅 日常总结 56(事件2 jQuery)

事件案例

开关灯案例

# 点击按钮圆圈变色



<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
        .c1 {
            height: 400px;
            width: 400px;
            border-radius: 50%;
        }
        .bg_green {
            background-color: greenyellow;
        }
        .bg_red {
            background-color: red;
        }
    </style>
</head>
<body>
    <div id="d1" class="c1 bg_red bg_green"></div>
    <button id="d2">变色</button>

    <script>
        let btnEle = document.getElementById('d2')
        let divEle = document.getElementById('d1')
        btnEle.onclick = function () {  // 绑定点击事件
            // 动态的修改div标签的类属性
            divEle.classList.toggle('bg_red')
        }
    </script>
</body>
View Code

 input框获取焦点失去焦点案例

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">

</head>
<body>
<input type="text" value="老板 去吗?" id="d1">

<script>
    let iEle = document.getElementById('d1');

    // 获取焦点事件
    iEle.onfocus = function () {
        // 将input框内部值去除  (.value就是获取   等号赋值就是设置)
        iEle.value = ''
    };

    // 失去焦点事件
    iEle.onblur = function () {
        // 给input标签重写赋值
        iEle.value = '没钱 不去!'
    }
</script>
</body>
View Code

实时展示当前时间

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">

</head>
<body>
    <input type="text" id="d1" style="display: block;height: 50px;width: 200px">
    <button id="d2">开始</button>
    <button id="d3">结束</button>

    <script>
        // 定义一个全局存储定时器的变量
        let t = null;
        let inputEle = document.getElementById('d1');
        let startBtnEle = document.getElementById('d2');
        let endBtnEle = document.getElementById('d3');
        // 1 访问页面之后 将访问的时间展示到input框中
        // 2 动态展示当前时间
        // 3 页面上加两个按钮 一个开始 一个结束
        function showTime() {
            let currentTime = new Date();
            inputEle.value = currentTime.toLocaleString()
        }

        startBtnEle.onclick = function () {
            // 限制定时器只能开一个
            if(!t){
                t = setInterval(showTime,1000)  // 每点击一次就会开设一个定时器 而t只指代最后一个
            }
        };
        endBtnEle.onclick = function () {
            clearInterval(t);
            // 还应该将t重置为空
            t = null
        }
    </script>
</body>
View Code

省市联动

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
    <select name="" id="d1">
        <option value="" selected disabled>--请选择--</option>
    </select>
    <select name="" id="d2"></select>

    <script>
        let proEle = document.getElementById('d1');
        let cityEle = document.getElementById('d2');
        // 先模拟省市数据
        data = {
            "河北": ["廊坊", "邯郸",'唐山'],
            "北京": ["朝阳区", "海淀区",'昌平区'],
            "山东": ["威海市", "烟台市",'临沂市'],
            '上海':['浦东新区','静安区','黄浦区'],
            '深圳':['南山区','宝安区','福田区']
        };



        // 选for循环获取省
        for(let key in data){
            // 将省信息做成一个个option标签 添加到第一个select框中
            // 1 创建option标签
            let opEle = document.createElement('option');
            // 2 设置文本
            opEle.innerText = key;
            // 3 设置value
            opEle.value = key;  // <option value="省">省</option>
            // 4 将创建好的option标签添加到第一个select中
            proEle.appendChild(opEle)
        }



        // 文本域变化事件  change事件
        proEle.onchange = function () {
            // 先获取到用户选择的省
            let currentPro = proEle.value;
            // 获取对应的市信息
            let currentCityList = data[currentPro];
            // 清空市select中所有的option
            cityEle.innerHTML = '';


            // 自己加一个请选择
            let ss = "<option disabled selected>请选择</option>";
            cityEle.innerHTML = ss;



            // for循环所有的市 渲染到第二个select中    注意一下for取 数组 值的过程与 自定义对象 不同
            for (let i=0;i<currentCityList.length;i++){
                let currentCity = currentCityList[i];
                // 1 创建option标签
                let opEle = document.createElement('option');
                // 2 设置文本
                opEle.innerText = currentCity;
                // 3 设置value
                opEle.value = currentCity;
                // 4 将创建好的option标签添加到第二个select中
                cityEle.appendChild(opEle)
            }
        }
    </script>
</body>
View Code

 

jQuery

jQuery内部封装了原生的js代码 (还额外添加了很多的功能)
能够让你通过书写更少的代码 完成js操作 
类似于python里面的模块  在前端模块不叫模块  叫 “类库”

兼容多个浏览器的 你在使用jQuery的时候就不需要考虑浏览器兼容问题

jQuery的宗旨
    write less do more
    让你用更少的代码完成更多的事情

jQuery在使用的时候也需要导入 但是它的文件非常的小(几十KB) 基本不影响网络速度

 

下载链接:jQuery官网

中文文档:jQuery AP中文文档 

jQuery内容

1 选择器
2 筛选器
3 样式操作
4 文本操作
5 属性操作
6 文档处理
7 事件
8 动画效果
9 插件
10 each、data、Ajax

针对导入问题

jQuery在使用之前 一定要确保已经导入了

# 1 文件下载到了本地 如何解决多个文件反复书写引入语句的代码
    可以借助于pycharm自动初始化代码功能完成自动添加
      配置
        编辑
          file and code template
        
        
  """我不想下载jQuery文件 能不能使用呢?"""  
# 2 直接引入jQuery提供的CDN服务(基于网络直接请求加载)
    CDN:内容分发网络
      CDN有免费的也有收费的
    前端免费的cdn网站:
          bootcdn
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  """你的计算机必须要有网络"""

 

 

jQuery基本语法

 

  jQuery(选择器).action()
  
  //秉持着jQuery的宗旨 jQuery 可以简写为    $
  jQuery()  === $()

 

jQuery与js代码对比

//将p标签内部的文本颜色改为红色
       

// 原生js代码操作标签
let pEle = document.getElementById('p1')
pEle.style.color = 'red'

        
// jQuery操作标签
$('p').css('color','red')

 

 

查找标签

基本选择器

// id选择器 
$('#d1')
//w.fn.init [div#d1]0: div#d1length: 1__proto__: Object(0)
// class选择器
$('.c1')
//w.fn.init [p.c1, prevObject: w.fn.init(1)]0: p.c1length: 1prevObject: w.fn.init [document]__proto__: Object(0)
// 标签选择器
$('span')
//w.fn.init(3) [span, span, span, prevObject: w.fn.init(1)]
//以上拿到都是jQuery对象


// jQuery对象如何变成标签对象
$('#d1')[0]
<div id=​"d1">​…​</div>​

             
// 标签对象如何转jQuery对象
$(document.getElementById('d1'))
w.fn.init [div#d1]

组合选择器/分组与嵌套

参考前面CSS博客:https://www.cnblogs.com/Its-cool/p/12878304.html

$('div.c1') //有类是c1的div

$('div#d1')  //id是d1的div

$('*')  // 全局 全部
               
$('#d1,.c1,p')  // 并列+混用
           
$('div span')  // 后代

$('div>span')  // 儿子

$('div+span')  // 毗邻

$('div~span')  // 弟弟

 

 

基本筛选器

$('ul li')
w.fn.init(10) [li, li, li, li, li, li, li.c1, li, li#d1, li, prevObject: w.fn.init(1)]
               
$('ul li:first')  // 大儿子 
w.fn.init [li, prevObject: w.fn.init(1)]0: lilength: 1prevObject: w.fn.init [document]__proto__: Object(0)
               
$('ul li:last')  //小儿子
w.fn.init [li, prevObject: w.fn.init(1)]0: lilength: 1prevObject: w.fn.init [document]__proto__: Object(0)
               
$('ul li:eq(2)')  // 索引
w.fn.init [li, prevObject: w.fn.init(1)]0: lilength: 1prevObject: w.fn.init [document]__proto__: Object(0)
               
$('ul li:even')  // 偶数索引 0包含在内
w.fn.init(5) [li, li, li, li.c1, li#d1, prevObject: w.fn.init(1)]0: li1: li2: li3: li.c14: li#d1length: 5prevObject: w.fn.init [document]__proto__: Object(0)
              
$('ul li:odd')  // 奇数索引
w.fn.init(5) [li, li, li, li, li, prevObject: w.fn.init(1)]0: li1: li2: li3: li4: lilength: 5prevObject: w.fn.init [document]__proto__: Object(0)
              
$('ul li:gt(2)')  // 大于索引
w.fn.init(7) [li, li, li, li.c1, li, li#d1, li, prevObject: w.fn.init(1)]0: li1: li2: li3: li.c14: li5: li#d16: lilength: 7prevObject: w.fn.init [document]__proto__: Object(0)
              
$('ul li:lt(2)')  // 小于索引
w.fn.init(2) [li, li, prevObject: w.fn.init(1)]0: li1: lilength: 2prevObject: w.fn.init [document]__proto__: Object(0)
              
$('ul li:not("#d1")')  // ul下 没有id是d1属性的 全部li(移除满足条件的标签)
w.fn.init(9) [li, li, li, li, li, li, li.c1, li, li, prevObject: w.fn.init(1)]
         
$('div')
w.fn.init(2) [div, div, prevObject: w.fn.init(1)]
$('div:has("p")')  // 选取出包含p标签的div标签(选取出包含一个或多个标签在内的标签)
w.fn.init [div, prevObject: w.fn.init(1)]

 

 

属性选择器

//注意 外部单引号  内部双引号
$('[username]')
//w.fn.init(3) [input, input, p, prevObject: w.fn.init(1)]
$('[username="jason"]')
//w.fn.init [input, prevObject: w.fn.init(1)]
$('p[username="egon"]')
//w.fn.init [p, prevObject: w.fn.init(1)]
$('[type]')
//w.fn.init(2) [input, input, prevObject: w.fn.init(1)]
$('[type="text"]')
//w.fn.init(2) [input, input, prevObject: w.fn.init(1)]

表单筛选器

:text
:password
:file
:radio
:checkbox
:submit
:reset
:button
...

表单对象属性
:enabled
:disabled
:checked
:selected
View Code

 

$('input[type="text"]')
w.fn.init [input, prevObject: w.fn.init(1)]0: inputlength: 1prevObject: w.fn.init [document]__proto__: Object(0)
$(':text')  // 等价于上面
w.fn.init [input, prevObject: w.fn.init(1)]0: inputlength: 1prevObject: w.fn.init [document]__proto__: Object(0)                
                
                                
$('input[type="password"]')
w.fn.init [input, prevObject: w.fn.init(1)]
$(':password')  // 等价于上面
w.fn.init [input, prevObject: w.fn.init(1)]




"""特殊情况"""
$(':checked')  // 它会将checked和selected都拿到
w.fn.init(2) [input, option, prevObject: w.fn.init(1)]0: input1: optionlength: 2prevObject: w.fn.init [document]__proto__: Object(0)
$('input:checked')  // 如果只想拿checked自己加一个限制条件
w.fn.init [input, prevObject: w.fn.init(1)] 

$(':selected')  // 它不会 只拿selected
w.fn.init [option, prevObject: w.fn.init(1)]

 

 

筛选器方法

$('#d1').next()  // 同级别下一个

$('#d1').nextAll()  // 同级别下面所有

$('#d1').nextUntil('.c1')  // 同级别下面到'.c1'  不包括'.c1'
                           
$('.c1').prev()  // 同级别上一个

$('.c1').prevAll()  // 同级别上面所有

$('.c1').prevUntil('#d2')  //  同级别上面到'#d2'  不包括'#d2'
              
$('#d3').parent()  // 第一级父标签

$('#d3').parent().parent()   // 爷爷标

$('#d3').parents()   // 父标上 所有

$('#d3').parentsUntil('body')  // 父标上 所有到'body'  不包括'body'
                           
$('#d2').children()  // 儿子
              
$('#d2').siblings()  // 同级别上下所有
              
              
"""下述两两等价"""            
$('div p')          
$('div').find('p')  # find从某个区域内筛选出想要的标签 
                            

$('div span:first')
$('div span').first()

                                                                                    
$('div span:last')
$('div span').last()
                                                                                    

$('div span:not("#d3")')
$('div span').not('#d3')

 

posted @ 2020-05-19 18:39  It's_cool  阅读(138)  评论(0)    收藏  举报