第六章 jQuery

6.1 jQuery介绍
  • jQuery是一个快速,小巧,功能丰富的JavaScript库。

  • 它通过易于使用的API在大量浏览器中运行,

  • 使得HTML文档遍历和操作,事件处理,动画和Ajax变得更加简单。通过多功能性和可扩展性的结合,jQuery改变了数百万人编写JavaScript的方式。

  • 操作: 获取节点元素对象,属性操作,样式操作,类名,节点的创建,删除,添加,替换

  • 开发环境:写项目

  • 生产环境:项目写完后,压缩代码 min.js

6.2 jQuery核心

write less,do more

6.3 jq对象转换js对象
$('button')[0]
6.4 js对象转换jq对象
$(js节点对象)
6.5 jq的选择器
  • 基础选择器

    • id用 #

    • 类用 .

<body>
        <div id="box" class="box">
            <p class="active">mjj1</p>
            <p class="active">mjj2</p>
            <input type="text">
        </div>
        <!-- 1.导入模块 -->
        <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            
            // console.dir($);
            // 选择器 基础选择器
            console.log($('.box'));//jquery对象 伪数组
            // jquery对象转换js节点对象
            console.log($('#box')[0]);
            // js节点对象转换jq对象
            var box = document.getElementById('box');
            console.log($(box),box);
            console.log($('#box>p'));-->打印子代            
            console.log($('input[type=submit]'));
#打印时出现prevobject是指没有获取到对象
            
            #绑定事件
            $('#box .active').click(function(){
                // 样式操作
                console.log(this);-this指的是当前的js节点对象
                // this.style
                // 设置单个样式属性
                // $(this).css('color','red');
                //  $(this).css('fontSize','20px');#转jquery对象
                // 设置多个属性
                 $(this).css({
                     'color':'red',
                     "font-size":40
                 })
                 console.log($(this).css('color'));--获取
            })
  • 高端选择器
<div id='box' class='box'>
    <p>
        mjj
    </p>
</div>
$('#box') -id
$('.box') -class
$('div p')
$('div>p')
$('div,p')
$('div.box')
  • 属性选择器
<input type = 'submit' value='提交'>

$('input[type=submit]')
  • 基本过滤选择器
:eq(index) 选择一个 索引从0开始

:gt(index) 大于索引的元素都选择出来了,

:lt(index) 小于索引的元素都选择出来了

:first 获取第一个
:last 获取最后一个
:odd  获取奇数
:even 获取偶数
  • 筛选选择器
.find()  即选择儿子也选择后代

.children() 只选择亲儿子

.parent() 选择父亲

.siblings() 查找所有的兄弟元素

    //补充:获取文档,body和html
    console.log(document);
    console.log(document.body);
    console.log(document.documentElement);
  • 过滤的方法
.eq() 选择一个 索引从0开始,(索引)
.children() 获取亲儿子
.find() 获取的后代
.parent() 获取父级对象
.siblings() 获取除它之外的兄弟元素
6.6 动画
  • 普通动画 ( show(毫秒)  hide(毫秒) 隐藏 toggle(毫秒) 切换
<body>
        <button id="btn">显示</button>
        <div id="box"></div>
        <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            
            $('#btn').click(function(){
                if($(this).text() === '显示'){
                     $('#box').show(1000,function(){
                        $('#btn').text('隐藏'); 
                    });
                    
                }else{
                    
                    $('#box').hide(1000,function(){
                        $('#btn').text('显示'); 
                    });

                } 
                //先停止掉在开就正常了 
                $('#box').stop().toggle(2000);
                
                $('#box').slideDown(2000);
                $('#box').fadeIn(2000);
            })
        </script>
    </body>
  • 卷帘门动画 slideDown() slideUp() slideToggle()

  • 淡入淡出效果 fadeIn() fadeOut() fadeToggle()

  • 自定义动画 .animate({params},speed,callback)

6.7 样式操作

通过调用.css()方法 如果传入一个参数,看一下这个参数如果是一个字符串表示获取值,如果是对象,表示设置多少属性值,如果是两个参数,设置单个属性值

css('字符串');--获取属性
css({'color':'red'});既可以设置一个属性也可以设置多个属性
css('color','yellow');设置一个属性
6.8类操作

addClass()  removeClass()  toggleClass()

addClass('active abc rtt');--追加类名,原来的还存在
removeClass('active abc');移除一个或多个
toggleClass('active');开关似的切换类名
6.9对属性操作

attr(name,value);//设置属性 removeAttr(name);//删除属性

attr();获取的是标签上的属性
removeAttr();

prop();获取的是当前节点对象的属性  单选操作
removeProp();

    $(function(){
                //添加一个或者多个属性
                $('p').attr('title','mjj');//添加一个
                $('p').attr({'a':1,'b':2});//添加多个
                console.log($('p').attr('id'));//获取值
                
                //移除多个或一个
                $('p').removeAttr('title id a');
                
            })

prop();用在input上
removeProp();用在input上
6.10 文档的操作
  • 文档的增
//后置追加
父元素.append(子元素);//子元素可以是文本、标签、js对象,append()如果参数是jq对象,那么相当于移动操作


子元素.appendto(父元素);
    // 子.appendTo(父)
                $('<a href="#">百度一下</a>').appendTo('#box').css('color','yellow');//*****

// 前置追加
$('#box').prepend('<p>hello world</p>');
// 子.prependTo(父)

    
$('参考的元素').before('要添加的元素');在h2前面追加
$('<h3>女神</h3>').insertBefore('h2');
$('要插入的元素').insertBefore('参考元素');
after();
insrrtAfer();
  • 文档的删
$('#btn').click(function(){
                    alert(1);
// remove即移除标签,事件也跟着移除
/* $(this).remove();//****
// console.log($(this).remove());
                    $('#box').after($(this).remove()); */
    
// $(this).detach();只是移除节点,事件还保留        // $('#box').after($(this).detach());
    
// $('#box').html(' ');--清空
$('#box').empty();--清空
    
                })
  • 文档的替换
$('h3').replaceWith('000000');
replaceAll() 替换所有
  • 文档的查
<head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        
        <div id="box">
            
            
            <h4>太白</h4>
        </div>
        
        <button id="btn">按钮</button>
        
        
        <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $(function(){
                var oH3 = document.createElement('h3');
                oH3.innerText = '女神';
                // 父.append(子)
                $('#box').append('mjj');
                $('#box').append('<h2>wusir</h2>');//*****
                $('#box').append(oH3);
                // append()如果参数是jq对象,那么相当于移动操作
                $('#box').append($('h4'));
                
                $('h2').css('color','red');
                
                // 子.appendTo(父)
                $('<a href="#">百度一下</a>').appendTo('#box').css('color','yellow');//*****
                
                
                // 前置追加
                $('#box').prepend('<p>hello world</p>');
                // 子.prependTo(父)
                
                
                
                $('h2').before('mjj2');
                
                $('<h3>女神</h3>').insertBefore('h2');
                
                $('h3').replaceWith('000000');
                
                $('#btn').click(function(){
                    alert(1);
                    // 即移除标签,事件也跟着移除
                    /* $(this).remove();//****
                    // console.log($(this).remove());
                    $('#box').after($(this).remove()); */
                    
                    
                    // $(this).detach();
                    
                    // $('#box').after($(this).detach());
                    
                    // $('#box').html(' ');
                    $('#box').empty();
                })
            })
        </script>
    </body>
6.11 事件
.click();//鼠标单击事件,参数可选(data,fn)
dblclick();//双击触发,
jqury解决单双击的冲突问题,setTimeout()

mousedown()/up();//鼠标按下/弹起触发事件
mousemove();//鼠标移动事件
mouseover()/out();//鼠标进入/立刻触发事件--鼠标指针穿过/离开被选元素或者当前元素的子元素,会触发事件
mouseenter()/leave();//鼠标进入/离开触发事件--鼠标指针只在穿过/离开被选元素
focus()/blur();//鼠标聚焦/失去焦点触发事件(不支持冒泡)
keydown()/up;//键盘按键按下/弹起触发
<head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            #box{
                width: 100px;
                height: 40px;
                background-color: red;
                position: relative;
            }
            #child{
                width: 400px;
                height: 100px;
                background-color: #000;
                position: absolute;
                top: 40px;
                display: none;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <div id="child"></div>
        </div>
        <input type="text">
        <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
    
        <script type="text/javascript">
            // mouseover 鼠标穿过父级元素和子元素都会调用方法
            /* $('#box').mouseover(function(){
                console.log('移入进来了');
                
                $('#child').slideDown(1000);
            })
            $('#box').mouseout(function(){
                console.log('移除了');
                
                $('#child').slideUp(1000);
            }) */
            
            /* $('#box').mouseenter(function(){
                console.log('进来了');
                
                $('#child').stop().slideDown(1000);
            })
            $('#box').mouseleave(function(){
                console.log('离开了');
                
                $('#child').stop().slideUp(1000);
            }) */
            
            $('#box').hover(function(){
                $('#child').stop().slideDown(1000);
            },function(){
                $('#child').stop().slideUp(1000);
            })
            //默认加载页面聚焦行为
        /*     $('input[type=text]').focus();
            $('input[type=text]').focus(function(){
                //聚焦
                console.log('聚焦了');
            })
            $('input[type=text]').blur(function(){
                //聚焦
                console.log('失去焦点了');
            })
             */
            
            $('input[type=text]').keydown(function(e){
                console.log(e.keyCode);//keyCode键盘码
                switch (e.keyCode){
                    case 8://等于8的时候清空,8是回车
                        $(this).val(' ')
                        break;
                    default:
                        break;
                }    
            })
            
            
6.12 表单事件
change();//表单元素发生改变时触发事件(此事件仅限于<input>元素,<textarea>框和<select>元素
select();//此事件仅限于input type类型为text和textarea表单元素
submit();//表单元素发生改变时触发事件(form表单有默认的submit行为,当对input type=submit按钮点击的时候会触发form的默认action,
此时可以调用jQuery的submit方法通过e.preventDefault()来阻止默认事件
javascript:void(0);//阻止默认事件 <a href="javascript:;">百度游戏啊</a> //阻止默认事件 e.preventDefault();//阻止默认事件
<body>
        <a href="javascript:;">百度游戏啊</a>
        <form action="">
            <input type="text" placeholder="用户名">
            <input type="password" placeholder="密码">
            <input type="submit">
        </form>
        <script src="js/jquery.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            $('form').submit(function(e){
                e.preventDefault();
                console.log('11111');
            })
        </script>
6.13 插入音乐
<audio src="static/海贼王%20-%20ビンクスの酒(独唱).mp3" controls="">
            
</audio>
<canvas id="" width="" height=""></canvas>

 

posted @ 2020-05-05 17:43  炜琴清  阅读(184)  评论(0编辑  收藏  举报