每日测验
"""
今日考题:
1.有一个列表[3,4,1,2,5,6,6,5,4,3,3]请写出一个函数,找出该列表中没有重复的数的总和
2.简述数据库表设计中一对一、一对多、多对多的应用场景,char与varchar的区别
3.js代码书写位置有几种,什么是事件,js如何绑定事件,常见的事件有哪些
4.什么是jQuery,它的基本语法是什么,jQuery导入方式有哪些分别有什么区别,
列举你所知道的jQuery选择器(针对表单筛选器是否有注意事项)
"""
昨日内容回顾
自己独立的敲出来昨天的案例
“”” 1.开关灯 pEle.classList.add() … 2.input框获取、失去焦点 onfocus onblur 3.计时器 onclick js代码逻辑 4.省市联动 onchange文本域变化 就记忆一个select “””
- jQuery简介
```python
"""
内部封装了并且提供了额外功能的模块、框架
类库
兼容多个浏览器
版本更新
1.X
2.X
3.X
宗旨
write less do more
如何导入jQuery
1.将文件下载到本地直接导入(压缩、未压缩)
好处在于没有网也可以正常使用
不好的地方在于需要重复书写,文件路径还要固定
(pycharm模块功能 自动添加固定的代码
配置
编辑
file and code template
html
py
)
2.CDN服务
CDN的概念:内容分发网络
参考网站:bootcdn
前端相关的应用程序都有免费的cdn服务
好处在于无需下载对应的文件,直接走网络请求使用
不好的地方在于必须要有网
基本语法结构
jQuery().action() === $().action()
"""
重点 jQuery对象和标签对象的区分 jQuery >>> 标签对象 $(‘#d1’)[0]
标签对象 >>> jQuery
$(document.getElementById('d1'))
不同的对象之间调用的方法是不一样的,不能混用
“””
组合、分组、嵌套
$(‘div,span,p’) $(‘#d1,.c1,div’) $(‘div span’) # 后代 $(‘div>span’) # 儿子 $(‘div+span’) # 毗邻 $(‘div~span’) # 弟弟
基本筛选器
“”” 针对已经得到的结果进行二次筛选 :first :last :eq(index) :even :odd :gt(index) :lt(index) :not :has 从后代元素中筛选 $(‘div:has(“.c1”)’) “””
属性选择器
$(‘[username]’) $(‘[username=”jason”]’) $(‘input[username=”jason”]’)
表单筛选器
$(‘input[type=”text”]’) $(‘:text’) :text … :file
“”” 特殊情况 $(‘:checked’) 拿到默认选中的checkbox和option $(‘input:checked’) 在书写表单筛选器的时候 如果前面可以加限制条件最好加一个 “””
筛选器方法
.next() .nextAll() .nextUntil() # 不包含最后一个
.prev() .prevAll() .prevUntil() # 不包含最后一个
.parent() .parents() .parentsUntil() # 不包含最后一个
.children() # 儿子们 .siblings() # 兄弟 同级别上下所有
$(‘div p’) === $(‘div’).find(‘p’)
基本筛选器优化封装
.first() .last() .not() .has() .eq() “”” 选择器无论你用哪个都可以 只要能够实现需求就行 “””
<a name="c7a1dd9a"></a>
# 今日内容概要
今天要把jQuery全部结束
- jQuery操作标签
- jQuery绑定事件
- jQuery补充知识点
- jQuery动画效果(了解)
- Bootstrap(前端框架)开头
<a name="69f4f6b4"></a>
# 今日内容详细
-
<a name="2dbfaab0"></a>
### jQuery练习题
```javascript
$('#i1')
r.fn.init [div#i1.container]
$('h2')
r.fn.init [h2, prevObject: r.fn.init(1)]
$('input')
r.fn.init(9) [input#exampleInputEmail1.form-control, input#exampleInputPassword1.form-control, input#exampleInputFile, input, input, input, input, input#optionsRadios1, input#optionsRadios2, prevObject: r.fn.init(1)]
$('.c1')
r.fn.init(2) [h1.c1, h1.c1, prevObject: r.fn.init(1)]
$('.btn-default')
r.fn.init [button#btnSubmit.btn.btn-default, prevObject: r.fn.init(1)]
$('.c1,h2')
r.fn.init(3) [h1.c1, h1.c1, h2, prevObject: r.fn.init(1)]
$('.c1,#p3')
r.fn.init(3) [h1.c1, h1.c1, p#p3.divider, prevObject: r.fn.init(1)]
$('.c1,.btn')
r.fn.init(11) [h1.c1, h1.c1, a.btn.btn-primary.btn-lg, button.btn.btn-warning, button.btn.btn-danger, button.btn.btn-warning, button.btn.btn-danger, button.btn.btn-warning, button.btn.btn-danger, button#btnSubmit.btn.btn-default, a.btn.btn-success, prevObject: r.fn.init(1)]
$('form').find('input')
r.fn.init(3) [input#exampleInputEmail1.form-control, input#exampleInputPassword1.form-control, input#exampleInputFile, prevObject: r.fn.init(1)]
$('label input')
r.fn.init(6) [input, input, input, input, input#optionsRadios1, input#optionsRadios2, prevObject: r.fn.init(1)]
$('label+input')
r.fn.init(3) [input#exampleInputEmail1.form-control, input#exampleInputPassword1.form-control, input#exampleInputFile, prevObject: r.fn.init(1)]
$('#p2~li')
r.fn.init(8) [li, li, li, li, li, li, li, li, prevObject: r.fn.init(1)]
$('#f1 input:first')
r.fn.init [input#exampleInputEmail1.form-control, prevObject: r.fn.init(1)]
$('#my-checkbox input:last')
r.fn.init [input, prevObject: r.fn.init(1)]
$('#my-checkbox input[checked!="checked"]')
r.fn.init(3) [input, input, input, prevObject: r.fn.init(1)]0: input1: input2: inputlength: 3prevObject: r.fn.init [document]__proto__: Object(0)
$('label:has("input")')
r.fn.init(6) [label, label, label, label, label, label, prevObject: r.fn.init(1)]
操作标签
```python操作类
“”” js版本 jQuery版本 classList.add() addClass() classList.remove() removeClass() classList.contains() hasClass() classList.toggle() toggleClass() “””
css操作
111
222
“””一行代码将第一个p标签变成红色第二个p标签变成绿色””” $(‘p’).first().css(‘color’,’red’).next().css(‘color’,’green’)jQuery的链式操作 使用jQuery可以做到一行代码操作很多标签
jQuery对象调用jQuery方法之后返回的还是当前jQuery对象 也就可以继续调用其他方法
class MyClass(object): def func1(self): print(‘func1’) return self
def func2(self):
print('func2')
return self
obj = MyClass() obj.func1().func2()
位置操作
offset() # 相对于浏览器窗口 position() # 相对于父标签
scrollTop() # 需要了解 $(window).scrollTop() 0 $(window).scrollTop() 969 $(window).scrollTop() # 括号内不加参数就是获取 1733 $(window).scrollTop(0) # 加了参数就是设置 n.fn.init [Window] $(window).scrollTop(500) n.fn.init [Window] scrollLeft()
尺寸
$(‘p’).height() # 文本 20 $(‘p’).width() 1670 $(‘p’).innerHeight() # 文本+padding 26 $(‘p’).innerWidth() 1674 $(‘p’).outerHeight() # 文本+padding+border 26 $(‘p’).outerWidth() 1674
文本操作
“”” 操作标签内部文本 js jQuery innerText text() 括号内不加参数就是获取加了就是设置 innerHTML html()
$(‘div’).text() “
有些话听听就过去了,不要在意,都是成年人!
“ $(‘div’).html() “
有些话听听就过去了,不要在意,都是成年人!
“ $(‘div’).text(‘你们都是我的大宝贝’) w.fn.init [div, prevObject: w.fn.init(1)] $(‘div’).html(‘你个臭妹妹’) w.fn.init [div, prevObject: w.fn.init(1)] $(‘div’).text(‘你们都是我的大宝贝
‘) w.fn.init [div, prevObject: w.fn.init(1)] $(‘div’).html(‘你个臭妹妹
‘) w.fn.init [div, prevObject: w.fn.init(1)] “””获取值操作
“”” js jQuery .value .val() “”” $(‘#d1’).val() “sasdasdsadsadad” $(‘#d1’).val(‘520快乐’) # 括号内不加参数就是获取加了就是设置
w.fn.init [input#d1] $(‘#d2’).val() “C:\fakepath\01测试路由.png” $(‘#d2’)[0].files[0] # 牢记两个对象之间的转换 File {name: “01测试路由.png”, lastModified: 1557043083000, lastModifiedDate: Sun May 05 2019 15:58:03 GMT+0800 (中国标准时间), webkitRelativePath: “”, size: 28733, …}
属性操作
“”” js中 jQuery setAttribute() attr(name,value) getAttribute() attr(name) removeAttribute() removeAttr(name)
在用变量存储对象的时候 js中推荐使用
XXXEle 标签对象
jQuery中推荐使用
$XXXEle jQuery对象
“””
let $pEle = $(‘p’)
undefined
$pEle.attr(‘id’)
“d1”
$pEle.attr(‘class’)
undefined
$pEle.attr(‘class’,’c1’)
w.fn.init [p#d1.c1, prevObject: w.fn.init(1)]
$pEle.attr(‘id’,’id666’)
w.fn.init [p#id666.c1, prevObject: w.fn.init(1)]
$pEle.attr(‘password’,’jason123’)
w.fn.init [p#id666.c1, prevObject: w.fn.init(1)]
$pEle.removeAttr(‘password’)
w.fn.init [p#id666.c1, prevObject: w.fn.init(1)]
“”” 对于标签上有的能够看到的属性和自定义属性用attr 对于返回布尔值比如checkbox radio option是否被选中用prop “””
$(‘#d3’).attr(‘checked’) “checked” $(‘#d2’).attr(‘checked’) undefined $(‘#d2’).attr(‘checked’) undefined $(‘#d4’).attr(‘checked’) undefined $(‘#d3’).attr(‘checked’) “checked” $(‘#d3’).attr(‘checked’,’checked’) # 无效 w.fn.init [input#d3]
$(‘#d2’).prop(‘checked’) false $(‘#d2’).prop(‘checked’) true $(‘#d3’).prop(‘checked’,true) w.fn.init [input#d3] $(‘#d3’).prop(‘checked’,false) w.fn.init [input#d3]
文档处理
“”” js jQuery createElement(‘p’) $(‘
‘) appendChild() append()
“”” let $pEle = $(‘
‘)
$pEle.text(‘你好啊 草莓要不要来几个?’)
$pEle.attr(‘id’,’d1’)
$(‘#d1’).append($pEle) # 内部尾部追加
$pEle.appendTo($(‘#d1’))
$(‘#d1’).prepend($pEle) # 内部头部追加 w.fn.init [div#d1] $pEle.prependTo($(‘#d1’)) w.fn.init [p#d1, prevObject: w.fn.init(1)]
$(‘#d2’).after($pEle) # 放在某个标签后面 w.fn.init [p#d2] $pEle.insertAfter($(‘#d1’))
$(‘#d1’).before($pEle) w.fn.init [div#d1] $pEle.insertBefore($(‘#d2’))
$(‘#d1’).remove() # 将标签从DOM树中删除 w.fn.init [div#d1]
$(‘#d1’).empty() # 清空标签内部所有的内容 w.fn.init [div#d1]
<a name="10b2761d"></a>
### 事件
```python
// 第一种
$('#d1').click(function () {
alert('别说话 吻我')
});
// 第二种(功能更加强大 还支持事件委托)
$('#d2').on('click',function () {
alert('借我钱买草莓 后面还你')
})
- 克隆事件
```html
- 自定义模态框
```python
"""
模态框内部本质就是给标签移除或者添加上hide属性
"""
左侧菜单
<script> $('.title').click(function () { // 先给所有的items加hide $('.items').addClass('hide') // 然后将被点击标签内部的hide移除 $(this).children().removeClass('hide') }) </script> <!--尝试用一行代码搞定上面的操作-->
返回顶部
<script> $(window).scroll(function () { if($(window).scrollTop() > 300){ $('#d1').removeClass('hide') }else{ $('#d1').addClass('hide') } }) </script>
自定义登陆校验
```python在获取用户的用户名和密码的时候 用户如果没有填写 应该给用户展示提示信息
username:
password:
- input实时监控
```python
<input type="text" id="d1">
<script>
$('#d1').on('input',function () {
console.log(this.value)
})
</script>
hover事件
<script> // $("#d1").hover(function () { // 鼠标悬浮 + 鼠标移开 // alert(123) // }) $('#d1').hover( function () { alert('我来了') // 悬浮 }, function () { alert('我溜了') // 移开 } ) </script>
键盘按键按下事件
<script> $(window).keydown(function (event) { console.log(event.keyCode) if (event.keyCode === 16){ alert('你按了shift键') } }) </script>
今日作业
"""
今日作业
必做
1.利用jQuery链式操作一句话完成菜单显隐展示
2.整理日考题目
3.整理今日内容完成博客书写
选做
1.预习前端框架Bootstrap
"""