当前位置: 首页 > 工具软件 > jQuery.toTop > 使用案例 >

2.JQuery第二天

施利
2023-12-01

JQuery第二天

1.学习目标


Jquery学了哪些东西? 
	1.找标签
		$('div')
		$(window)
	2.加事件
		.click()
		.mouseover()
		.mouseout()
	3.修改: 样式,内容,属性
		修改样式: .css()  单值: 传两个值,  多值: 传一个对象
		修改内容: .html()  .text()  .val()
		修改属性: .attr()  .prop() 用来设置特殊的属性值, checked selected (值为布尔类型)
	
	4.加动画(属性变化加时间)
		常规动画: 显示隐藏, 上拉下拉, 淡入淡出
		自定义动画: 传入变化的属性+时间
	
	5.节点操作
		增加,删除,修改内容





2.知识讲解

1.加动画

//显示隐藏
show()
hide()
toggle()

//上拉下拉
slideDown()
slideUp()
slideToggle()

//淡入淡出
fadeIn()
fadeOut()
fadeTo()
fadeToggle()

//自定义动画(需要加定位)
animate({},时间)  //注意参数写法很多,都带引号总没错 ,注意,只能修改数值类型的,颜色不能. 
stop()      停止动画(所有的动画之前都加一个stop,避免动画重复执行,显示隐藏动画除外.)
delay()     延迟动画

2.位置大小操作

//获取left值和top值, 相对于视口(浏览器)的距离
标签.offset().left
标签.offset().top

//获取滚动距离 ----滚动事件 scroll()
标签.scrollTop()
标签.scrollLeft()

//获取宽高
标签.width()
标签.height()

3.节点操作

empty()  清空(只清空内容)
remove()  移除(标签和内容一起移除)
clone()   克隆(复制节点)

after()  标签之后插入
before() 标签之前插入

prepend()  前面追加(第一个子元素)
append()  标签内最后追加内容(最后一个子元素)-----如果追加的元素在原文档树中存在,会移除之前的.
appendTo() 将某个标签添加到父标签中

4.事件监听和绑定

on()  off()
可以一次添加多个事件
标签.on(事件类型,回调函数); 可以添加多个事件
$('.box').on('click',function(){});

//添加单击和鼠标移入事件
$('button').eq(0).click(function() {
    $('.box').on('click mouseover', function() {
        console.log('鼠标点击和移入');
    })
})

//移除单击事件
$('button').eq(1).click(function() {
    $('.box').off('click');
})

5.each方法

each() 方法也叫迭代,简单点就是循环。
注意: Jquery中有隐式迭代,不需要我们再进行遍历某些元素操作,但是不一样的操作需要自己实现。

例如: 批量给标签添加事件,但是每个标签的内容不一样,就可以使用each()方法

总结: 你可以认为each就是一个简单的for循环。
$("#uu>li").each(function (index,element) {               
	$(element).css("opacity",(index+1)/10);
});

7.PC端特效制作

1.开关灯

$('button').click(function() {
    $('body').toggleClass('black');
})

2.购物车下拉菜单

$('.box').hover(function() {
	$('.box .menu').stop().slideToggle();
})

3.侧边二级菜单

$('.nav .subnav').hide();

$('.nav .item').click(function() {
    $(this).children('ul').slideDown();
    $(this).siblings('.item').children('ul').slideUp()
})

4.轮播图圆点

$('li').click(function() {
    $(this).addClass('active').siblings().removeClass('active');
})

5.全选,反选

$('button').eq(0).click(function() {
    $('input:checkbox').prop('checked', true)
})

$('button').eq(1).click(function() {
    $('input:checkbox').prop('checked', false)
})

$('button').eq(2).click(function() {
    $('input:checkbox').each(function(index, el) {
        $(this).prop('checked', !$(this).prop('checked'));
        // if ($(this).prop('checked')) {
        //     $(this).prop('checked', false);
        // } else {
        //     $(this).prop('checked', true);
        // }
    })
})

6.页面滚动动画

$(window).scroll(function() {
    var num = $(this).scrollTop();
    if (num > 100) {
        $('.nav').css('opacity', 1);
    } else {
        $('.nav').css('opacity', 0.1);
    }
})

7.回到顶部动画

$('.toTop').click(function() {
    $('html,body').animate({
    'scrollTop': '0'
    }, 500);
})

8.tab菜单

$('.box .title li').click(function(){
    //自己排它
    $(this).addClass('active').siblings().removeClass('active');
    $('.box .content div').eq($(this).index()).addClass('current').siblings().removeClass('current');
})

9.模态框

  //添加单击和鼠标移入事件
$('button').eq(0).click(function() {
    $('.box').on('click mouseover', function() {
        console.log('鼠标点击和移入');
    })
})

//移除单击事件
$('button').eq(1).click(function() {
    $('.box').off('click');
})

10.后台点击侧边菜单显示

//点击translate(进行切换)

11.发布新浪微博

//功能1: 点击文本域,获得焦点,失去焦点,修改边框颜色
$('.box textarea').focus(function() {
    $(this).css('border', '1px solid orange');
})

$('.box textarea').blur(function() {
    $(this).css('border', '1px solid #ccc');
})

//功能2: 监听文本域的键盘弹起事件,获得文本域长度,添加提示文字个数
$('.box  textarea').keyup(function() {
    //获得文本域内容,判断长度
    var num = $(this).val().length;

    if (num > 120) {
        $('.box .row span').text(`您已经多输入了${num-120}个字了`).css('color', 'red');
    } else {
        $('.box .row span').text(`您还可以输入${120-num}个字`).css('color', '#ccc');
    }
})

//功能3: 点击发布按钮
//3.1 如果内容为0, 提示重新输入
//3.2 如果内容大于120,提示重新输入
//3.3 否则发布微博,先添加,然后隐藏,再slideDown()动画显示
//3.4 清空文本域内容
$('.box button').click(function() {
    var num = $('.box textarea').val().length;
    if (num <= 0) {
        alert('您输入的内容为空')
    } else if (num > 120) {
        alert('你输入的内容大于120,请重新输入')
    } else {
        //发布微博
        //先添加
        $('.news ul').prepend(
            `<li><a href="#">${$('.box textarea').val()}</a><span>删除</span></li>`);
        $('.news ul li').eq(0).hide().slideDown();
        $('.box textarea').val('');
    }
})

//功能4: 点击删除一行上的元素,但是不能检测到动态添加的元素
//点击删除---不能给动态的元素添加事件
// $('.news li span').click(function() {
//     $(this).parent().slideUp(function() {
//         $(this).remove();
//     })
// })

//监听整个页面中的 .news li span的元素,添加事件
$(document).on('click', '.news li span', function() {
    $(this).parent().slideUp(function() {
        $(this).remove();
    })
})

4.今日练习

5.今日总结

 类似资料: