jQuery 一次定时器_年薪百万之路--第五十一天 jQuery(上)

6ff69f8e1e638031282def6286d44cfc.png

原生js事件绑定

开关灯案例

<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>

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

<input type="text" value="老板 去吗?" id="d1">
  
  <script>
      let iEle = document.getElementById('d1')
      // 获取焦点事件
      iEle.onfocus = function () {
          // 将input框内部值去除
          iEle.value = ''
          //  点value就是获取   等号赋值就是设置
      }
      // 失去焦点事件
      iEle.onblur = function () {
          // 给input标签重写赋值
          iEle.value = '没钱 不去!'
      }
  </script>

实时展示当前时间

<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>

省市联动

<!DOCTYPE html>
  <html lang="en">
  <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>"
          // let oppEle = document.createElement('option')
          // oppEle.innerText = '请选择'
          // oppEle.setAttribute('selected','selected')
          cityEle.innerHTML = ss
  
          // for循环所有的市 渲染到第二个select中
          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  // <option value="省">省</option>
              // 4 将创建好的option标签添加到第一个select中
              cityEle.appendChild(opEle)
          }
      }
  </script>
  </body>
  </html>

jQuery

Query内部封装了原生的js代码(还额外添加了很多的功能)

能够让你通过书写更少的代码 完成js操作

类似于python里面的模块 在前端模块不叫模块 叫 “类库”

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

jQuery的宗旨

write less do more

让你用更少的代码完成更多的事情

针对导入问题
# 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() === $()

如何查找标签

基本选择器

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对象如何变成标签对象
$('#d1')[0]
<div id=​"d1">​…​</div>​
document.getElementById('d1')
<div id=​"d1">​…​</div>​
// 标签对象如何转jQuery对象
undefined
$(document.getElementById('d1'))
w.fn.init [div#d1]

组合选择器/分组与嵌套

$('div')
w.fn.init(2) [div#d1, div.c1, prevObject: w.fn.init(1)]
$('div.c1')
w.fn.init [div.c1, prevObject: w.fn.init(1)]0: div.c1length: 1prevObject: w.fn.init [document]__proto__: Object(0)
$('div#d1'$('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")')  # 移除满足条件的标签
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")')  # 选取出包含一个或多个标签在内的标签
w.fn.init [div, prevObject: w.fn.init(1)
w.fn.init [div#d1, prevObject: w.fn.init(1)]
$('*')
w.fn.init(19) [html, head, meta, title, meta, link, script, script, body, span, span, div#d1, span, p#d2, span, span, div.c1, span, span, prevObject: w.fn.init(1)]
               
$('#d1,.c1,p')  # 并列+混用
w.fn.init(3) [div#d1, p#d2, div.c1, prevObject: w.fn.init(1)]
              
$('div span')  # 后代
w.fn.init(3) [span, span, span, prevObject: w.fn.init(1)]
$('div>span')  # 儿子
w.fn.init(2) [span, span, prevObject: w.fn.init(1)]
$('div+span')  # 毗邻
w.fn.init [span, prevObject: w.fn.init(1)]
$('div~span')  # 弟弟
w.fn.init(2) [span, span, prevObject: w.fn.init(1)]

基本筛选器

$('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")')  # 移除满足条件的标签
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")')  # 选取出包含一个或多个标签在内的标签
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)]

表单筛选器

$('input[type="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)]

$(':text')  # 等价于上面第一个
w.fn.init [input, prevObject: w.fn.init(1)]0: inputlength: 1prevObject: w.fn.init [document]__proto__: Object(0)
$(':password')  # 等价于上面第二个
w.fn.init [input, prevObject: w.fn.init(1)]

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

表单对象属性
:enabled
:disabled
:checked
:selected
"""特殊情况"""
$(':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)
$(':selected')  # 它不会 只拿selected
w.fn.init [option, prevObject: w.fn.init(1)]
$('input:checked')  # 自己加一个限制条件
w.fn.init [input, prevObject: w.fn.init(1)]

筛选器方法

$('#d1').next()  # 同级别下一个
$('#d1').nextAll()
$('#d1').nextUntil('.c1')  # 不包括最后一个

$('.c1').prev()  # 上一个
$('.c1').prevAll()
$('.c1').prevUntil('#d2')

$('#d3').parent()  # 第一级父标签
$('#d3').parent().parent()
$('#d3').parents()
$('#d3').parentsUntil('body')
$('#d2').children()  # 儿子
              
$('#d2').siblings()  # 同级别上下所有
$('div p')
# 等价           
$('div').find('p')  # find从某个区域内筛选出想要的标签 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值