day58——jQuery事件特性、bootstrap基本使用

jQuery事件特性

阻止后续事件执行

需求:点击form表单内的提交按钮后,只给form标签内的span标签设置文本内容,不向后端提交数据,也不刷新。

<form action="">
    <span id="d1" style=" background-color:red;"></span>
    <input type="submit" id="d2">
</form>
<script>
    $('#d2').click(function (e) {
        $('#d1').text('你能看到我吗?')
        // 阻止标签后续事件的执行 方式1(推荐)
        // return false
        // 阻止标签后续事件的执行 方式2
        // e.preventDefault()
    })
</script>

阻止事件冒泡

事件冒泡:当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到window 。(注意这里传递的仅仅是事件 并不传递所绑定的事件函数。所以如果父级没有绑定事件函数,就算传递了事件 也不会有什么表现 但事件确实传递了。)

<div id="d1" style="background-color: red;height:400px;width:400px">顶层
    <p id="d2" style="background-color: blue;height:200px;width:200px;float:right">中间层
        <span id="d3" style="background-color: yellow;float:right">底层</span>
    </p>
</div>
<script>
    $('#d1').click(function(){
        alert('我是顶层的')
    })
    $('#d2').click(function(e){
        alert('我是中间层的')
        // 阻止事件冒泡的方式1(推荐)
        return false
        // 阻止事件冒泡的方式2
        // e.stopPropagation()
    })
    $('#d3').click(function(){
        alert('我是底层的')
        return false
    })
</script>

事件委托

<button>点</button>
<button>点点</button>
<button>点点点</button>
<script>
    // 给页面上所有的button标签绑定点击事件,无法影响到动态创建的标签
    // $('button').click(function(){
    //     alert('操作成功')
    // })
    
    // 在指定的范围内 将事件委托给某个标签 无论该标签是事先写好的还是后面动态创建的
    $('body').on('click','button',function(){
        alert('操作成功')
    })

</script>

<!--
let $btnEle = $('<button>');
$btnEle.text('新建的按钮');
$('body').append($btnEle);

点击后续在浏览器中动态创建的button按钮也能触发点击事件,弹出警告框...
-->

页面加载

# 等待页面加载完毕再执行代码
window.onload = function(){
  // js代码
}

"""jQuery中等待页面加载完毕"""
# 第一种
$(document).ready(function(){
  // js代码
})
# 第二种
$(function(){
  // js代码
})
# 第三种
"""直接写在body内部最下方"""

动画效果

$('#d1').hide(5000)  
w.fn.init [div#d1]
           
$('#d1').show(5000)
w.fn.init [div#d1]
           
$('#d1').slideUp(5000)
w.fn.init [div#d1]
           
$('#d1').slideDown(5000)
w.fn.init [div#d1]
           
$('#d1').fadeOut(5000)
w.fn.init [div#d1]
           
$('#d1').fadeIn(5000)
w.fn.init [div#d1]
           
$('#d1').fadeTo(5000,0.4)
w.fn.init [div#d1]      

each、data替代for循环

# each()
# 第一种方式
$('div')
w.fn.init(10) [div, div, div, div, div, div, div, div, div, div, prevObject: w.fn.init(1)]
$('div').each(function(index){console.log(index)})
VM181:1 0
VM181:1 1
VM181:1 2
VM181:1 3
VM181:1 4
VM181:1 5
VM181:1 6
VM181:1 7
VM181:1 8
VM181:1 9

$('div').each(function(index,obj){console.log(index,obj)})
VM243:1 0 <div>​1​</div>​
VM243:1 1 <div>​2​</div>​
VM243:1 2 <div>​3​</div>​
VM243:1 3 <div>​4​</div>​
VM243:1 4 <div>​5​</div>​
VM243:1 5 <div>​6​</div>​
VM243:1 6 <div>​7​</div>​
VM243:1 7 <div>​8​</div>​
VM243:1 8 <div>​9​</div>​
VM243:1 9 <div>​10​</div>​

# 第二种方式
$.each([111,222,333],function(index,obj){console.log(index,obj)})
VM484:1 0 111
VM484:1 1 222
VM484:1 2 333
(3) [111, 222, 333]
"""
有了each之后 就无需自己写for循环了 用它更加的方便
"""
# data()
"""
能够让标签帮我们存储数据 并且用户肉眼看不见
"""
$('div').data('info','回来吧,我原谅你了!')
w.fn.init(10) [div#d1, div, div, div, div, div, div, div, div, div, prevObject: w.fn.init(1)]
               
$('div').first().data('info')
"回来吧"
$('div').last().data('info')
"回来吧"
               
$('div').first().data('xxx')
undefined
$('div').first().removeData('info')
w.fn.init [div#d1, prevObject: w.fn.init(10)]
           
$('div').first().data('info')
undefined
$('div').last().data('info')
"回来吧"

前端框架Booststap

该框架已经帮你写好了很多页面样式,你如果需要使用,只需要下载它对应文件,之后直接cv拷贝即可

在使用Bootstrap的时候所有的页面样式都只需要你通过class来调节即可

版本选择建议使用v3版本:https://v3.bootcss.com/

注意

**bootstrap的js代码是依赖于jQuery的,也就意味着你在使用Bootstrap动态效果的时候,一定要导入jQu

全局 CSS常用 样式

布局容器

<div class="container">
    	左右两侧有留白
</div>

<div class="container-fluid">
			左右两侧没有留白
</div>
# 后续在使用bootstrap做页面的时候 上来先写一个div class=container,之后在div内部书写页面

栅格系统

<div class="row"></div>
写一个row就是将所在的区域划分成12份

<div class="col-md-6 ">  获取你所要的份数
# 在使用bootstrap的时候 脑子里面一定要做12的加减法

排版

bootstrap将所有原生的HTML标签的文本字体统一设置成了肉眼可以接受的样式

效果一样,但是标签表达的意思不一样(语义)

表格

<table class="table table-hover table-striped table-bordered">
		
<tr class="success">
            <td>1</td>
            <td>jason</td>
            <td>123</td>
            <td>study</td>
</tr>

<tr class="active">...</tr>
<tr class="success">...</tr>
<tr class="warning">...</tr>
<tr class="danger">...</tr>
<tr class="info">...</tr>

表单

<div class="container">
    <div class="col-md-8 col-md-offset-2">
        <h2 class="text-center">登陆页面</h2>
        <form action="">
            <p>username:<input type="text" class="form-control"></p>
            <p>password:<input type="text" class="form-control"></p>
            <p>
                <select name="" id="" class="form-control">
                    <option value="">111</option>
                    <option value="">222</option>
                    <option value="">333</option>
                </select>
            </p>
            <textarea name="" id="" cols="30" rows="10" class="form-control"></textarea>
            <input type="submit">
        </form>
    </div>
</div>

# 针对表单标签 加样式就用form-control
	class="form-control"
"""
<input type="checkbox">222
<input type="radio">333
checkbox和radio我们一般不会给它加form-control,直接使用原生的即可
"""

# 针对报错信息 可以加has-error(input的父标签加)
<p class="has-error">
	username:
  <input type="text" class="form-control">
</p>

按钮

<a href="https://www.mzitu.com/" class="btn btn-primary">点我</a>
<button class="btn btn-danger">按我</button>
<button class="btn btn-default">按我</button>
<button class="btn btn-success">按我</button>
<button class="btn btn-info">按我</button>
<button class="btn btn-warning">按我</button>


<button class="btn btn-warning btn-lg">按我</button>
<button class="btn btn-warning btn-sm">按我</button>
<button class="btn btn-warning btn-xs">按我</button>
<input type="submit" class="btn btn-primary btn-block">  
通过给按钮添加 .btn-block 类可以将其拉伸至父元素100%的宽度,而且按钮也变为了块级(block)元素。

图表

<h2 class="text-center">登陆页面 <span class="glyphicon glyphicon-user"></span></h2>


    <style>
        span {
            color: greenyellow;
        }
    </style>

# 扩展

导航条

<nav class="navbar navbar-inverse">   # 将默认的白色改成黑色
<nav class="navbar navbar-default">

分页器

<nav aria-label="Page navigation">
  <ul class="pagination">
    <li>
      <a href="#" aria-label="Previous">
        <span aria-hidden="true">&laquo;</span>
      </a>
    </li>
    <li class="active"><a href="#">1</a></li>
    <li><a href="#">2</a></li>
    <li><a href="#">3</a></li>
    <li><a href="#">4</a></li>
    <li><a href="#">5</a></li>
    <li>
      <a href="#" aria-label="Next">
        <span aria-hidden="true">&raquo;</span>
      </a>
    </li>
  </ul>
</nav>

弹框

基于bootstrap的更好用的弹框插件sweetalert

网址:https://lipis.github.io/bootstrap-sweetalert/

https://lipis.github.io/bootstrap-sweetalert/
  
  
swal('你还好吗?')
undefined
swal('你还好吗?')
undefined
swal('你还好吗?','我不好,想你了!')
undefined
swal('你还好吗?','我不好,想你了!','success')
undefined
swal('你还好吗?','我不好,想你了!','warning')
undefined
swal('你还好吗?','我不好,想你了!','error')
undefined
swal('你还好吗?','我不好,想你了!','info')
undefined
# 我们在后面的课程中 还会涉及到该部分内容
上一篇:jquery结尾 bootstrap


下一篇:迷人的学霸操作!教你Python中合并字典的多种解题方法