9.jQuery初识—选择器、效果

目录

一、初识jQuery

js缺点:

  1. 书写繁琐,代码量大。
  2. 代码复杂。
  3. 动画效果很难实现。使用定时器,要小心各种定时器的清除。各种操作和处理事件不好实现。
  4. 浏览器的兼容性。

jQuery

  1. 轻量级的js框架,不影响页面加载速度
  2. 使用比js简单、方便
  3. 事件、样式、动画支持
  4. Ajax操作支持。jQuery简化了AJAX操作,后端只需返回一个JSON格式的字符串就能完成与前端的通信
  5. 插件扩展开发,jQuery有着丰富的第三方插件,
  6. 链式表达,jQuery的链式操作可以将多个操作写在一行代码中
  7. 兼容性好

jquery对象和dom对象

  1. jquery找的标签对象称为——jquery对象

    原生js找到的标签对象称为——dom对象

  2. dom对象只能使用dom对象的方法,不能使用jquery对象的方法

    jquery对象也是

  3. 转换

    jquery对象转dom对象——jquery对象[0] 示例:$(‘#d1‘)[0]

    dom对象转jquery $(dom对象)

二、jquery文件的引入和加载

jquery-3.3.1.js 较大,一般是用在开发环境下。
jquery-3.3.1.min.js 更小,一般是用在生产环境下。

引入方式

  1. 直接写在<script>里js代码

    <script src="jquery.js"></script>
  2. 写在window.load = function(){}里的js代码。window.onload必须等到页面内包括的所有元素加载完毕之后才执行。

三、jquery基础选择器

使用jquery的时候要有入口函数——回调函数。

//方式1
$(function (){
    函数体;
})
//方式一
$(dociment).ready(function(){
    函数体;
})

1、id选择器

console.log($(‘#brother‘));
$(‘brother‘).css(‘color‘, ‘red‘);	//设置样式

2、标签选择器

//(1)设置一个值
$(‘a‘).css(‘color‘, ‘red‘);
//(2)设置多个值,设置多个值的时候使用对象存储 key:value
$(‘a‘).css({‘color‘:‘red‘, ‘font-size‘:10px});

3、类选择器

$(‘.c1‘).css(‘background‘, ‘green‘)

4、通配符选择器*

console.log($(‘*‘));
/* 取出所有的标签
jQuery.fn.init(17) [html, head, meta, title, style, body,
 ul, li#brother, li, a, li.li3, li, li, li, li,
 script, script, prevObject: jQuery.fn.init(1)] 
 */
// 应用:实现清空整个界面的元素
$(‘*‘).html(‘‘);

四、jquery层级选择器

1、后代选择器 div a

$(‘div p‘).css(‘color‘, ‘red‘);
$(‘#box p‘).css(‘color‘, ‘red‘);

2、子代选择器 div > a

$(‘#box>p‘).css(‘color‘, ‘red‘);

3、毗邻选择器

$(‘#father+p‘).css(‘font-size‘, ‘24px‘)

4、兄弟选择器

$(‘father~p‘).css(‘background‘, ‘red‘)

5、组合选择器

$("#id, .className, tagName")

五、基本过滤选择器

1、:first 获取第一个元素

获取第一个option标签,修改文本内容

$(‘li:first‘).text(‘first‘);

2、:last 获取最后一个元素

$(‘li:last‘).html(‘last‘)

3、:odd匹配所有索引值为奇数的元素,从0开始计数

// :odd匹配所有索引值为奇数的元素,从0开始计数
$(‘li:odd‘).css(‘color‘,‘red‘);

4、:even匹配所有索引值为偶数的元素,从0开始计数

// :even匹配所有索引值为偶数的元素,从0开始计数
$(‘li:even‘).css(‘color‘,‘green‘);

5、:eq(index)获取给定索引值的元素 从0开始计数

// :eq(index)获取给定索引值的元素  从0开始计数
// 选中索引值为1的元素
$(‘li:eq(1)‘).css(‘font-size‘,‘10px‘);

6、:gt(index) 匹配所有大于给定索引值的元素

// :gt(index) 匹配所有大于给定索引值的元素
// 大于索引值1
$(‘li:gt(1)‘).css(‘font-size‘,‘10px‘);

7、:lt(index) 匹配所有小于给定索引值的元素

// :lt(index) 匹配所有小于给定索引值的元素
// 小于索引值1
$(‘li:lt(1)‘).css(‘font-size‘,‘10px‘);

冒号表示匹配或选取的意思:$(":button") 表示匹配所有的按钮。

$("input:checked")表示匹配所有选中的被选中元素(复选框、单选框等,不包括select中的option)。

六、jquery属性选择器

1、标签名[属性名]查找所有含有属性的该标签的元素

$(‘li[id]‘).css(‘color‘, ‘red‘);

2、标签名[alter=value]匹配给定的属性是某个特定值的元素

$(‘li[class=cc]‘).css(‘font-size‘, ‘30px‘);

3、[attr!=value] 匹配所有不含有指定的属性,或者属性不等于特定值的元素

$("li[class!=cc]").css(‘color‘, ‘red‘);

4、[attr^=value]匹配给定的属性是以某些值开始的元素

$("input[name^=username]").css(‘background‘, ‘red‘);

5、[attr$=value]匹配给定的属性是以某些值结尾的元素

$(‘input[name$=doc]‘).css(‘background‘, ‘red‘);

6、[attr*=value]匹配给定的属性是以包含某些值的元素

$(‘button[class*=btn]‘).css(‘background‘,‘red‘)

七、jquery筛选选择器

选择器或者筛选器选择出来都是对象。筛选器方法就是通过对象调用一个进一步过滤作用的方法,

下一个:

$(‘#id‘).next()		//找到下一个兄弟标签
$(‘#id‘).nextAll()	//找到下面所有的兄弟标签
$(‘#id‘).nextUntil(‘#i2‘)	//直到找到id为i2的标签就结束查找,不包含他
$(‘#I2‘).next().next().text();   //链式

上一个:

$(‘#id‘).prev()
$(‘#id‘).prevAll()
$(‘#id‘).prevUntil(‘#i2‘)

父亲元素

$(‘#id‘).parent()		
$(‘#id‘).parents()		//查找当前元素的所有父辈元素(爷爷辈、祖先辈都能找到)
$(‘#id‘).parentUntil(‘body‘)	//查找当前元素的所有父辈元素,直到遇到匹配的那个元素为止,这里直到body标签,不包含body标签,基本选择器都可以放到这里面使用

儿子和兄弟元素

$(‘#id‘).children();
$(‘#id‘).siblings();	//兄弟们,不包含自己, .siblings(‘#id‘), 也可以在添加选择器进一步筛选

find查找所有的后代元素

$(‘ul‘).find(‘#l3‘);		//类似于 $(‘ul #l3‘)

filter过滤

$(‘li‘).filter(‘#l3‘);

八、jquery效果——显示隐藏

js中的三种隐藏和显示的方法,

1、通过.css设置属性,来控制显示、隐藏

//通过.css属性,来控制显示、隐藏
$(‘btn‘).click(function (){
    $(‘#box‘).css(‘display‘, ‘block‘);
})

2、Jquery提供方法show()、hide()控制元素显示隐藏

show:

show(spend, callback)

  • speed:三种预定速度的字符串(‘show‘,‘normal‘, ‘fast‘)或表示动画时长的毫秒值(1000毫秒==1秒)
  • callback:在动画完成时执行的函数,每个元素执行一次。

hide:

hide(speed,callback)跟show使用方法类似,表示隐藏显示的元素。

可以通过show()和hide()方法,来动态控制元素的显示隐藏。

var isShow = true;
$(‘#btn‘).click(function () {
    if (isShow) {
        // show(speed,callback)
        $(‘#box‘).show(‘show‘,function () {
            // alert(111);
            $(this).text(‘盒子出来了‘);
            isShow = false;
            $(‘#btn‘).text(‘隐藏‘);
        })
    } else {
        // 动画时长的毫秒值2000ms
        $(‘#box‘).hide(2000,function () {
            $(this).text(‘盒子消失了‘);
            isShow = true;
            $(‘#btn‘).text(‘显示‘);
        })
    }
})

3、toggle开关

如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的

 如果是仅仅显示和隐藏盒子,不需要操作文字,推荐使用toggle方法。

$(‘#btn‘).click(function () {
    $(‘#box‘).toggle(3000,function () {
        alert(111);
    });
})

九、jquery效果——slide高度变化显示隐藏

1、slideDown:通过高度变化(向下增大)来到动态地显示所有匹配的元素,在显示完成后触发一个回调函数。用法和参数跟上面类似。

2、slideUp:通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地触发一个回调函数。用法和参数跟上面类似。

运用hover来触发回调,鼠标浮动其上触动显示和隐藏:

$(function () {
    $(‘#btn‘).hover(function () {
        $(‘#box‘).slideDown(2000);
 
    },function () {   // 第二个回调函数
        $(‘#box‘).slideUp(‘slow‘);
    })
})

3、slideToggle:通过高度变化来切换所有匹配元素的可见性,并在切换完成后可选地触发一个回调函数。和toggle用法类似。

$(‘#btn‘).click(function () {
    $(‘#box‘).slideToggle(‘fast‘);
})

十、jQuery效果——fade不透明度变化

1、fadeIn:通过不透明度的变化来实现所有匹配元素的淡入效果,并在动画完成后可选地触发一个回调函数。

这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化

2、fadeOut:通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触发一个回调函数。

这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。

3、fadeTo:把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数。

这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。

4、fadeToggle:通过不透明度的变化来开关所有匹配元素的淡入和淡出效果,并在动画完成后可选地触发一个回调函数。

这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。实现淡入淡出的效果就是使用此方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>效果——slide</title>
    <style type="text/css">
        #box {
            width: 100px;
            height: 100px;
            border: 1px solid red;
            /*display: none;*/
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div id="box">
 
    </div>
    <button id="btn">隐藏</button>
</body>
<script src="jquery-3.3.1.js"></script>
<script type="text/javascript">
 
    $(function () {
        // $(‘#btn‘).click(function () {
        $(‘#box‘).mouseover(function () {  // 鼠标移动上去逐渐隐形
            $(‘#box‘).fadeOut(2000);
            /* 点击后内部样式表变为如下:
            <div id="box" style="display: none;"></div>
             */
        })
 
        $(‘#btn‘).mouseout(function () { // 鼠标移动上去逐渐现形
            // $(‘#box‘).fadeIn(2000);
            $(‘#box‘).fadeTo(2000,0.3);
        })
         
        $(‘btn‘).click(function () {
            $(‘#box‘).fadeToggle(3000);
        })
    })
</script>
</html>

十一、jquery效果——animate动画

这是用于创建自定义动画的函数。

语法:animate(params,[speed],[fn])

  • params:一组包含作为动画属性和终值的样式属性和及其值的集合。
  • speed:三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000)
  • fn:在动画完成时执行的函数,每个元素执行一次。
$(function () {
    $(‘#btn‘).click(function () {
        /*
        // params:一组包含作为动画属性和终值的样式属性和及其值的集合
        $(‘#box‘).animate({
            width: ‘200px‘,
            height: ‘300px‘
        })
        */
 
        // 动画效果向右下方向移动
        $(‘#box‘).animate({left:‘100px‘,top: ‘200px‘});
 
        // 动画队列:动画效果是先右移、再下移
        $(‘#box‘).animate({left:‘100px‘}).animate({top: ‘400px‘});
 
        // 在运行时,stop方法停止动画
        $(‘#box‘).animate({left:‘100px‘,top:‘300px‘}, 2000);
 
        // delay方法延迟操作
        $(‘#box‘).animate({left:‘100px‘}).delay(2000).animate({top: ‘400px‘});
    })
 
    $(‘#stop‘).click(function () {
        $(‘#box‘).stop()
    })
})

1、stop:停止所有在指定元素上正在运行的动画

语法:stop([clearQueue],[jumpToEnd])

参数:clearQueue:如果设置成true,则清空队列。可以立即结束动画。

   gotoEnd:让当前正在执行的动画立即完成,并且重设show和hide的原始样式,调用回调函数等

2、delay:概念:用来做延迟的操作

语法:delay(1000),一秒之后做后面的操作

十二、利用jquery效果——弹出广告

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>弹出广告</title>
    <style type="text/css">
 
    </style>
</head>
<body>
    <div id="box" style="width: 330px;height: 480px;position: absolute;right: 10px;bottom: 0;display: none">
        <img src="广告.png" style="width: 100%;height: 100%;"/>
    </div>
</body>
<script src="jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function () {
        // 排队去干活
        $(‘#box‘).slideDown(‘normal‘).slideUp(‘fast‘).fadeIn(1000).click(function () {
            $(this).fadeOut(1000);   // 点击盒子1秒时间淡出
        });
    })
</script>
</html>

相关推荐