加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

day46:jQuery

发布时间:2020-12-20 09:57:13 所属栏目:Python 来源:网络整理
导读:目录 1.jQuery初识 2.选择器 3.文本操作 4.class类值操作 5.css样式操作 6.值操作 7.注意点:button按钮提交form表单数据 8.jquery选择器补充 9.模态对话框示例 10.创建标签 11.文档操作 12.清空标签 13.删除标签 14.克隆 15.模板字符串 16.事件绑定 17.事件

目录

1.jQuery初识

2.选择器

3.文本操作

4.class类值操作

5.css样式操作

6.值操作

7.注意点:button按钮提交form表单数据

8.jquery选择器补充

9.模态对话框示例

10.创建标签

11.文档操作

12.清空标签

13.删除标签

14.克隆

15.模板字符串

16.事件绑定

17.事件冒泡

18.事件委托

19.属性操作

20.逻辑运算符

21.jQuery中简单动画效果

22.常用事件

23.页面载入

1.jQuery初识

/* 在body部分建立一个id为d1的h1标签 */
var d1 = $('#d1'); // 所得到的d1是一个jQuery对象  → d1:jQuery.fn.init?[h1#d1]
var d = document.getElementById('d1');  所得到的d是一个原生dom对象  → d1:<h1 id='d1'></h1>
/* 注意:jquery对象和dom对象之前不能调用互相的方法 */

 jquery对象和dom对象可以互相转换 */
d1[0]  jQuery对象转化成dom对象
$(d)  dom对象转化成jQuery对象

2.选择器

2.1 id选择器

$('#d1')  对比js:document.getElementById('d1')

2.2 类选择器

$('.c1')  对比js:document.getElementByClassName('c1')

2.3 元素选择器

$('span')  对比js:document.getElementByTagName('span')

2.4 组合选择器

$('#d1,.c2')

 html代码
<div id="d1">
    这是d1
</div>
<div class="c2">
    这是c2
 </div>

 css代码:
#d1,.c2{
    background-color: red;
    height: 100px;
    width: 100px;
    border-bottom: 1px solid black;
    }
    
 jquery代码:
// 注意:只有jQuery对象才有.css属性,DOM对象没有.css属性
$('#d1,.c2').css('background-color','green');  将id为d1和class为c2的标签的背景颜色都设置为绿色
$('#d1,.c2')[1];    索引为1的dom对象
$('#d1,.c2').eq(1);  索引为1的jQuery对象

2.5 后代选择器

 格式:$("form input")

2.6 属性选择器

 html代码:
<div class="c1" xx="oo">
    这是c1
</div>
<input type="text" name="username">
    
[xx]{
    color:purple;
    }

 input标签:  type='xx'   [type='text']即可找到对应的input标签
$('[xx]').css('color','green');
$('[type="text"]').css('color','red');

2.7 表单选择器

 $(":input") 找到所有input标签 $(":text") 找到所有input标签,且type=text的标签 $(":password") 找到所有input且type=password的标签 $(":radio") 找到所有input且type=radio的标签 $(":checkbox") 找到所有input且type=checkbox的标签

html代码:
<form action="">
    <input type="text" id="username">
    <input type="text" id="username2">
    <input type="password" id="pwd">
    <input type="submit">
</form>

 jQuery代码:找到所有的type=text的input标签
$(':text');

2.8 筛选器方法

<!-- html代码 -->
<ul>
    li>谢一峰</li class="c1">王子宇>孙波="c2">石淦>
        span>白雪冰>方伯仁>
>

2.8.1 parent()

var c = $('.c1');  找到c1类所对应的标签对象
c.parent();  找自己的父亲标签 只找一代
c.parents();  找自己的祖先辈标签 会找到所有代
c.parentsUntil('body');   往上找父级标签,直到找到body标签为止,不包含body标签

2.8.2?children()

var u = $('ul');
u.children();   找到所有儿子标签
u.children('.c1');  找到符合.c1选择器的所有儿子标签

2.8.3 next()

var c = $('.c1');
c.next();  找到下面的那个兄弟标签
c.nextAll();   找到下面所有兄弟标签
c.nextUntil('.c2');   找到下面到某个兄弟标签为止,不包含那个兄弟标签

2.8.4 prev()

);
c.prev();  找到上面的那个兄弟标签
c.prevAll();  找到上面所有兄弟(注意顺序都是反的)顺序:4-3-2-1
c.prevUntil('.c1');  找到上面到某个兄弟为止,不包含那个兄弟(注意顺序都是反的)

2.8.5 siblings()

c.siblings();   找到不包含自己的所有兄弟
c.siblings('.c1');   筛选兄弟中有class类值为c1的标签

2.8.6 find() 找后代

$('li').find('span');  找li标签里面的span标签->等同于css的li span后代选择器
$('li span')  和$('li').find('span')等同效果

2.8.7?first()和last() 和eq(索引值)

$('li').first();   找所有li标签中的第一个
$('li').last();  找所有li标签中的最后一个
$('li').eq(0);   按照索引取对应的那个标签,索引从0开始
$('li').eq(-1);   最后一个
$('li')[ 索引 ]  通过中括号索引取值获取的是原生dom对象,而用eq(索引值)获取的是jQuery对象

3.文本操作

在jQuery中使用text()和html()进行文本操作,和js中的innerText和innerHTML是等同的

 设置文本
$('#xiaolin').text('小林望明月');  仅仅只能设置文本
$('#xiaolin').text('<a href="">小林望明月</a>');  text不能设置带链接的
$('#xiaolin').html('<a href="">小林望明月</a>');  这种带链接的要用html

 获取文本
$('#xiaolin').text();  '小林望明月'
$('#xiaolin').html();  '<a href="">小林望明月</a>'

4.class类值操作

 添加类值
$('.c1').addClass('c2');  等同于js中的add方法

 删除类值
$('.c1').removeClass('c2');  等同于js中的remove方法

 切换:有就删除,没有就添加
$('.c1').toggleClass('c2');  等同于js中的toggle方法

5.css样式操作

<div class="c1"></div>

 给类对应的标签设置样式
$('.c1').css({'background-color':'pink','width':'300px'});

6.值操作

html代码input type="text" id="username"="radio" class="a1" name="sex" value="1">="2"="checkbox"="a2"="hobby"抽烟
喝酒
="3"烫头
select name="city"="s1"option value>北京option>上海>深圳select="lover"="s2" multiple>波多>苍井>小泽>            
 jquery代码 1.普通文本输入框:
     获取输入框中的值
        $(':text').val();
     设置输入框中的值
        $(':text').val('xxx');

 2. radio 单选框
     获取值:
        $(':radio:checked' 设置值:
        $(':radio').val(['2']);  将input中type='radio'的标签默认选中
        
 3.checkbox 多选框
     A.通过循环获取多选框中的每个值
         循环方式1
        var s = $(':checkbox:checked');
        for (var i=0;i<s.length;i++){
            console.log(s.eq(i).val());
        }
         补充$.each循环(循环方式2)
             1.循环普通数组
                var a = [11,22,33];
                $.each(a,function(k,v){
                    console.log(k,v);  k是索引值,v是数组的值
                })
             2.循环标签数组
                );
                $.each(s,v); k是索引值,v是dom标签对象
                })
     B.设置值
         $(':checkbox').val(['1','3']); 纯数字和字符串数字都能够识别
        $(':checkbox').val([2,3]);

 4.select 单选下拉框
       获取值
         $('#s1').val();
       设置值
          $('#s1').val(['2'5.select-multiple 多选下拉框
       获取值
         $('#s2' 设置值
         $('#s2').val(['1','2']);

7.注意点:button按钮提交form表单数据

bodyform action=""="submit"button>确认>
    
    <button type="submit">确认</button> (不写type默认是submit)1.在form表单里面,且type类型是submit 有提交数据的效果 -->
    
    <button type="button">确认</button>2.虽然在form表单里面,但是type类型为button 所以没有提交数据的效果 form3.如果放到form表单外面,就算type是submit类型,也是没有提交数据的效果的-->
    >

8.jquery选择器补充

 表单对象属性选择器 
:checked  找到被选中的input标签和option标签
:selected  找被选中的select标签中的option标签
:disabled  不可操作的标签 
:enabled   可操作的标签
 在html代码中 可以对这些标签的默认状态进行设置 ="username" disabled>  input框不可操作 ="1" checked> 默认选中男 >抽烟  默认选中抽烟 ="2" selected>   默认选中上海  总结  1.enabled和disabled可以应用在input输入框中,radio单选框和checkbox多选框中,select下拉框中
     2.checked只能应用在radio单选框和checkbox多选框中
     3.selected只能应用在select下拉框中-->

9.模态对话框示例

<!DOCTYPE htmlhtml lang="en"headmeta charset="UTF-8"title>Titlestyle>
        /* 点击登录时,除了登录框部分,其他部分为阴影区域,这部分是设置阴影区域的样式 */
        .shadow{
            position: fixed;   固定定位,基于窗口的位置移动 
            top0;
            left
            right 0
            bottom
            background-color rgba(0,0.3)
            z-index 9;  z轴数值为9 用来确保是覆盖别人还是被别人覆盖 */
        }
        
         点击登录时,会出现一个登录页面的太狂,这部分是设置登录弹框的样式 
        .mode
            height 400px
            width 300px #ffffff 10 z轴数值为10,而shadow阴影的z轴数值为9 所以当登录弹框会浮在阴影上面 50% 
            margin-top -200px
            margin-left -150px;

        }
        .hide
            display none;
        }
    >

h1>性感荷官、在线发牌div>还有一些广告词button id="btn">登录div ="mode hide" 默认登录弹框是隐藏的 >请登录会员p
        用户名:="text"
        密码:="password"="confirm"="cancel">取消="shadow hide"></ 默认阴影效果是隐藏的 -->

script src='jquery.js'script>
    // 当点击登录按钮时
     1.去除shadow的hide效果,使shadow使用本来定义好的css样式(灰色阴影效果) */
     2.去除mode的hide效果,让登录弹框显示出来 
    $('#btn).click(function (){
          $(.shadow,.mode).removeClass(hide);
    })
    
     当点击取消按钮时
     1.给shadow添加hide效果 让shadow没有任何样式 所以css阴影效果自然也没有了  2.给mode添加hide效果 当点击取消按钮时 登录弹框消失 #cancel).addClass();
    })


html>

10.创建标签

var a = document.createElement('a');  创建一个a标签的dom对象
    
 使用jQuery创建a标签对象,并且为a标签对象添加属性和值
$('<a>',{
    text:'这还是个链接''link''baidu'
})

11.文档操作

 往标签内部的后面添加元素 1.append方法:父标签对象.append(子标签对象)
    var a = $('<a>',{href:"",text:'百度'});
    $('div').append(a);
    var s = '<a href="">xx</a>';
    $('div').append(s);
 2.appendTo:子标签对象.appendTo(父标签对象)
    a.appendTo($('div'));


 往标签内部的前面添加元素 1.prepend方法
    ).prepend(a)
 2.prependTo方法
    a.prependTo($('div'));

 往标签外部的后面添加 1.after方法
    $('div').after('<a href="">xxxxx</a>');
 2.insertAfter方法
    a.insertAfter($('div' 往标签外部的前面添加 1.before方法
    $('div').before('<a href="">xxxxx</a>' 2.insertBefore方法
    a.insertBefore($('div'));    

12.清空标签

 清除div中所有内容,只剩下一个没有任何内容的div标签 这三个用哪个都行 没什么区别 
$('div').text(''); 
$('div').html('');
$('div').empty();

13.删除标签

 清除所有内容,包括标签自己本身
$('div').remove();

14.克隆

 html代码
<div class="c1">
    <button class="btn">点击我!有超多惊喜</button>
</div>

 js代码
    $('.btn').click( (){
         var btn = $(this).clone(); // 不克隆绑定的事件
         通俗说:就是点击第一个按钮可以克隆,点击克隆生成的按钮不可以克隆
        
        var btn = $(this).clone(true); 克隆连带事件
        $('.c1').append(btn);
         通俗说:无论点击哪个按钮,都可以克隆。因为克隆的按钮也连带克隆事件
    })

15.模板字符串

 jQuery中的模板字符串其实就和python中的占位符一个道理 
var a = '大海啊';
var ss = `${a},全是水`;  输出:大海啊,全是水 和python的f字符串一样
    name = 'xx'
    s = f'{name}你好呀'
    print(s) */

16.事件绑定

 方式1
$('#btn').click( (){
    $('.shadow,.mode').removeClass('hide');
})

 方式2
$('.c1').on('click', (){
    $(this).addClass('c2');
})

17.事件冒泡

什么是事件冒泡?当父级或者祖先辈标签和子标签绑定了相同的事件时,比如点击事件,那么当点击子标签时,会一层层触发父级标签的点击事件

>
        .c1 green 100px
        .c2 red 50px.c1 (){
        alert(这是父标签);
    });
    $(.c2 (e){
        alert(这是子标签);
        return false;   阻止事件冒泡:方式1
         e.stopPropagation() // 阻止时间冒泡:方式2
    })
>

18.事件委托

什么是事件委托?事件委托是通过事件冒泡的原理,利用父级去触发子级的事件

 html部分
<div class="c1">
    <button class="btn">屠龙宝刀,点击就送!</button>
</div>

 js代码部分
    $('.c1').on('click','.btn',1)">this).clone();  这里的this指代的还是btn对象,并不是.c1类对象
        $('.c1').append(btn);    
    })

19.属性操作

prop方法:针对的是checked,selected,enabled,disabled

$('#sex').prop('checked',1)">设置选中
$('#sex').prop('checked',1)">false);  取消选中
$('#sex').prop('checked');  查看当前状态是否为选中状态,选中为true,未选中为false
$('#uname').prop('disabled',1)">设置不可编辑
$('#uname').prop('disabled',1)">设置可以编辑

attr方法:获取值,修改值

$('#d1').attr('id')   获取属性对应的值
$('#d1').attr({'class':'c1','name':'mike'});  设置属性

20.逻辑运算符

and  &&  逻辑与
or   ||  逻辑或 
not  !   逻辑非

21.jQuery中简单动画效果

 css代码
.c2{
    background-image: url("meinv.png");
    background-size: 100%;
    height: 350px;
    width: 400px;
    display: none;
}
html
<div class="c2"></div>

 js代码
$('.c2').show(1000);
$('.c2').hide(1000);
$('.c2').slideDown(1000);
$('.c2').slideUp(3000);

22.常用事件

 #ff6700 200px
            background-image url("meinv.png")
            background-size 100% 350px 1.失去光标时触发的事件:blur
        $(#username).blur( (){
            $(this).css({background-coloryellow});
        });
    
     2.获取光标时触发的事件:focus
).focus(blue});
        });

     3.域内容发生变化时触发的事件:change 
     ---> 如果是给input标签绑定的change事件,
            那么只有input标签中的内容发生变化,并且失去光标时才会触发 
     $().change( (){
        $(green});
     });

     4.鼠标进入(触碰)时触发的事件:mouseenter
     $().mouseenter( (){
         $(red})
     })
    
     5.鼠标离开时触发的事件:mouseleave
).mouseleave(})
     })

      6.鼠标悬浮事件:hover
    $().hover(
          鼠标进入时触发事件
         })
         }, 鼠标离开时触发事件
         })
         }
     ) ;

     7.实时捕获输入内容的事件:input
).on(input (){
          console.log($().val());
    })
>

23.页面载入

 页面加载事件,等页面上所有的标签和一些静态文件(图片、视频、外部js文件,外部css文件等等)全部加载完才自动触发的事件
        window.onload =  (){
        $('#d1').click( (){
            $('#d1').css({'background-color':'green'})   ;
            })
        }
          window.onload 存在覆盖现象,后设置的会把前面设置的覆盖掉
        
 jquery的页面载入,等html文件中的代码加载完成之后触发,不存在覆盖现象
        $(document).ready( (){
            $('#d1').click( (){
                $('#d1').css({'background-color':'green'})   ;
            });
        })

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读