jQuery筛选器、jQuery事件、bootstrap
上周作业
页面定时器案例:
有一个input框
两个按钮:开始 结束
1.点击开始按钮 input内展示当前时间并按秒数刷新
2.点击结束按钮 input内展示停止
ps:写完之后测试有无bug 连续多次点击开始按钮 再试试能不能结束
计时器:<input type="text" id="input">
<button id="start">开始</button>
<button id="stop">结束</button>
<script>
// 1.找按钮标签
let btnEle1 = document.getElementById('start')
let btnEle2 = document.getElementById('stop')
let inpEle = document.getElementById('input')
// 定义一个全局变量存储循环定时任务
let t = null;
// 将展时间的代码单独封装成一个函数
let func1 = function () {
// 获取当前时间
let time = new Date()
// 转为格式化时间,便于用户查看,将格式化时间添加到input框中
let n = time.toLocaleTimeString()
inpEle.value = n
}
console.log(inpEle)
// 给开始按钮绑定一个点击事件
btnEle1.onclick = function () {
if (!t) { // 判断全局变量是否为空
t = setInterval(func1, 1000)
}
}
// 给结束按钮绑定一个点击事件
btnEle2.onclick = function () {
clearInterval(t)
t = null; // 把全局变量清空
}
</script>
搜索框案例
input内有默认的文本值
用户一旦选择该input想做内容修改
就提前把内容清空
<body>
<p><input type="text" id="d1"></p>
<p><button id="d2">dian!</button></p>
<script>
let inpEle = document.getElementById('d1')
inpEle.onfocus = function (){
this.removeAttribute('placeholder')
}
inpEle.onblur = function (){
this.setAttribute('placeholder','欢迎下次光临')
}
</script>
</body>
筛选器方法
1.链式操作的 底层原理
对象调用方法之后还会返回一个对象,从而实现链式操作的效果
2.方法说明
方法 | 说明 |
---|---|
$(“#id”).next() | 查找当前元素的下一个 |
$(“#id”).nextAll() | 查找当前元素的下面所有的 |
$(“#id”).nextUntil(“#i1”) | 查找当前元素的所有的下一个元素,直到遇到匹配的那个元素 |
$(“#id”).prev() | 查找当前元素的上一个 |
$(“#id”).prevAll() | 查找当前元素的上面所有的 |
$(“#id”).prevUntil(“#i1”) | 查找当前元素的所有的上一个元素,直到遇到匹配的那个元素 |
$(“#id”).parent() | 查找当前元素的父辈元素 |
$(“#id”).parents() | 查找当前元素的所有父辈元素 |
$(“#id”).parentsUntil(#i2) | 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素 |
$(“#id”).children(); | 查找当前元素的儿子们 |
$(“#id”).siblings(); | 查找当前元素的兄弟们 |
操作标签
jQuery操作 | JS操作 | 说明 |
---|---|---|
addClass() | classList.add() | 添加指定class类名 |
removeClass() | classList.remove() | 移除指定class类名 |
hasClass() | classList.contains() | 判断是否存在类名,返回值为true 、false; |
toggleClass() | classList.toggle() | 切换CSS类名,如果有就移除,如果没有就添加 |
.css(‘样式名’,’样式值’) | style.样式名=’样式值’ | 修改样式 |
text() | innerText() | 文本内容 |
html() | innerHTML() | html内容 |
val() | value | 值 |
[0].files | files | 文件 |
attr() | setAttribute() getAttribute() |
静态属性 |
prop() | 动态变换(checked) | |
append() | append() | 向每个匹配的元素内部追加内容 |
prepend() | 被选元素的开头插入指定内容。 | |
after() | 每个匹配的元素之后插入内容 | |
before() | 每个匹配的元素之前插入内容 | |
remove() | 移除标签 | |
empty() | 清空标签 |
位置操作
offset() # 获取匹配元素在当前窗口的相对便宜或者设置元素位置
position() # 获取匹配元素相对父元素的便宜
scrollTop() # 获取匹配元素相对滚动条顶部的偏移
scrollLeft() # 获取匹配元素相对滚蛋条左侧的偏移
'''
offset()方法:
允许我们检索一个元素相对于文档的当前位置
position()方法:
是相对于父级元素的位移
'''
文本操作
1.HTML:
html() # 取得第一匹配元素的html内容
html(val) # 设置所有匹配元素的html内容
2.文本值:
text() # 取得所有匹配元素的内容
text(val) # 设置所有匹配元素的内容
3.值
val() # 取得第一个匹配元素的当前值
val(val) # 设置所有匹配元素的值
val([val1,val2]) # 设置多选的checkbox、多选select的值
文档处理
$(A).append(B) # 把B追加到A
$(A).appendTo(B) # 把A追加到B
$(A).prepend(B) # 把B前置到A
$(A).pretendTo(B) # 把A前置到B
$(A).after(B) # 把B放到A的后面
$(A).insertAfter(B) # 把A放到B的后面
$(A).before(B) # 把B放到A前面
$(A).insertBefore(B) # 把A放到B前面
remove() # 从DOM中删除所有匹配的元素
empty() # 删除匹配的元素集合中所有的子节点
jQuery绑定事件
<!--JS绑定事件-->
标签对象.on事件名 = function(){事件代码}
btnEle.onclick = function(){alert(123)}
<!--jQuery绑定事件-->
方式一:
jQuery对象.事件名(function)(){事件代码}
$btnEle.click(function)(){alert(123)}
方式二:
jQuery对象.on('事件名',function(){事件代码})
$btnEle.on('click',function(){alert(123)})
jQuery动画效果
show([s,[e],[fn]])
hide([s,[e],[fn]])
toggle([s],[e],[fn])
// 滑动
slideDown([s],[e],[fn])
slideUp([s,[e],[fn]])
slideToggle([s],[e],[fn])
// 淡入淡出
fadeIn([s],[e],[fn])
fadeOut([s],[e],[fn])
fadeTo([[s],o,[e],[fn]])
fadeToggle([s,[e],[fn]])
// 自定义(了解即可)
animate(p,[s],[e],[fn])
阻止后续事件
能够触发form表单提交数据动作的标签有两个
<input type="submit">
<button></button>
给已有事件的标签绑定事件,会先执行绑定的,再去执行默认的
也可以让标签之前的事件不执行:return false
$(':submit').click(function(e){
alert('一定要细心!!')
return false
<!--方式二 e.preventDrfault()-->
})
事件冒泡
设计到标签嵌套并且有相同的事件的时候,那么会逐级往上反馈并执行
$("span").click(function(e){
alert("span");
return false; # 方式一
# e.stopPropagation(); 方式二
})
事件委托
'''
创建标签的两种方式
JS:
document.createElement()
jQuery:
$('<标签名>')
'''
事件绑定默认情况下是不会对动态创建的标签生效的,如果想生效需要事件委托
$('div').om('click','button',function(){
alert('加油加油加油')
})
上述方式就可以解决动态标签事件的执行问题(注意委托指的是标签内部的标签)
Bootstrap框架
http://www.fontawesome.com.cn/
提前写好了所有的标签样式,直接拷贝即可
使用之前需要先导入,bootstrap涉及到js的部分需要用到jQuery
布局容器
栅格系统
全局css样式
组件