第五章jQuery
DOM文档加载的步骤
- 解析HTML结构。
- 加载外部脚本和样式表文件。
- 解析并执行脚本代码。
- DOM树构建完成。
- 加载图片等外部文件。
- 页面加载完毕。
执行时间不同
window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。
$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。
编写个数不同
window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个
$(document).ready()可以同时编写多个,并且都可以得到执行
简化写法不同
window.onload没有简化写法
$(document).ready(function(){})可以简写成$(function(){});
基础选择器
1.id选择器
console.log($('#brother')); $('#brother').css('color','red');
//2.标签选择器
//设置一个值
// $('a').css('color','yellow')
// 设置多个值 设置多个值得时候使用对象存储 key:value
$('a').css({'color':'yellow','font-size':'24px'}); //3.类选择器 $('.li3').css('background','green'); //4.通配符选择器 * 使用不是很频繁 console.log($('*'));
//清空整个界面的dom元素
$('*').html('');
//1.后代选择器 div p $('#box p').css('color','red'); //2.子代选择器 div > p $('#box>p').css('color','yellow') //3.毗邻选择器 匹配素所有紧接着选中元素的兄弟 +
$('#father+p').css('font-size','30px'); //4.兄弟选择器 ~
$('#father~p').css('background','blueviolet'); console.log($('li')); //5.获取第一个元素
$('li:first').css('font-size','50px'); //6.获取最后一个元素 $('li:last').css('font-size','50px'); $('li:eq(3)').css('font-size','50px'); 基本过滤选择器:
//获取第一个 :first ,获取最后一个 :last //奇数
$('li:odd').css('color','red');
//偶数
$('li:even').css('color','yellow'); //选中索引值为1的元素 *
$('li:eq(1)').css('font-size','100px'); //大于索引值1
$('li:gt(1)').css('font-size','50px'); //小于索引值1
$('li:lt(1)').css('font-size','12px'); 属性选择器:
标签名[属性名] 查找所有含有id属性的该标签名的元素
$('li[id]').css('color','red'); //匹配给定的属性是what值得元素
$('li[class=what]').css('font-size','30px');
//[attr!=value] 匹配所有不含有指定的属性,或者属性不等于特定值的元素
$('li[class!=what]').css('font-size','50px'); // 匹配给定的属性是以某些值开始的元素
$('input[name^=username]').css('background','gray');
//匹配给定的属性是以某些值结尾的元素
$('input[name$=222]').css('background','greenyellow'); //匹配给定的属性是以包含某些值的元素
$('button[class*=btn]').css('background','red')
jquery和DOM之间的转换:
//dom==>jquery对象 var oDiv = document.getElementById('box');
console.log($(oDiv)); $(oDiv).click(function(){
// alert(111);
}) //第一种方式 jquery ===>DOM对象
console.log($('button')[0]); //第二种方式
console.log($('button').get(0));
var isShow = true; $('button').get(0).onclick = function(){
// alert(222);
show和hide方法
/*
$('#btn').click(function(){
if(isShow){
$('#box').show('slow',function(){
// alert(111); $(this).text('盒子出来了'); isShow = false;
$('#btn').text('显示');
})
}else{
$('#box').hide(2000,function(){
// alert(111); $(this).text(' ');
isShow = true;
$('#btn').text('隐藏'); })
}
})
*/ //toggle 开关 如果元素显示则隐藏 ,反之亦然 $('#btn').click(function(){
$('#box').toggle(3000,function(){ alert(111);
});
})
动画效果:
$('#btn').click(function () {
$('#box').animate({width:'0px',height:'0px'},'fast').animate({width:'300px',height:'300px'})
})
右下角小广告效果:
$(function(){
$('#box').slideDown('normal').slideUp('fast').fadeIn(1000).click(function () {
$(this).fadeOut(1000)
});
}) 属性操作:
attr 是为jquery操作
prop 是为DOM的属性操作
3.addClass() removeClass() 添加类 和删除类,可以通过此方法实时添加和删除标签里的类 $('span').addClass('span2 span3') $('span').removeClass('span2')
var isBig = true; $('span').click(function(){ if(isBig){
$(this).addClass('active');
isBig = false;
}else{
$(this).removeClass('active');
isBig = true; } })
4.值属性的操作 text() html() val() //仅仅是获取文本
console.log($('#box2').text());
//获取的所有,包括<a></a>这些标签
console.log($('#box2').html());
//获取值
console.log($('input').val());
$('input').val('嘿嘿你个大头鬼') $('#btn').click(function(){
var val = $('input').val(); $("#box2").text(val);
}) //表单控件使用的一个方法
$('input').change(function(){
console.log($(this).val());
})
//追加元素 $('ul').append('<li><a href="#">luffy</a></li>');
$('ul').append(oLi);
//如果直接的内容是当前页面中的某些元素,那么这些元素将从原位置上消失。简言之,就是一个移动操作
$('ul').append($('span')); //appendTo() $('<a href="#">路飞2</a>').appendTo($('ul')); // prepend 插入到被选中的元素的第一个位置
$('ul').prepend('<li>我是第一个元素</li>')
$('<li>我是第0个元素</li>').prependTo($('ul')) //after before $('ul').after('<h3>我是一个三级标题</h3>'); //insertAfter
$('<a href="#">第一个</a>').insertAfter($('ul')); $('ul').before('<h2>我是一个二级标题</h2>'); //insertBefore //复制操作 clone() $('button').click(function(){ //副本具有与真身一样的事件处理能力 完全克隆
$(this).clone(true).insertAfter($(this)); }) //替换 // $('h3').replaceWith('<button>替换的按钮</button>'); // $('<a href="#">替换超链接</a>').replaceAll('button'); //删除
//empty() 只是清空了被选的内容 // $('ul').empty(); // remove() 被选元素 也被删掉了 事件就没有 什么都没有 // $('ul').remove(); //detach() 移除匹配的节点元素 删除节点后 事件会保留 var $btn = $('button').detach();
console.log($btn[0]); $('ul').append($btn[0]);
//1.获取匹配元素的相对父元素的偏移 position
console.log($('p').position().left);
console.log($('p').position().top); var offsetTop = $('p').position().top + 50 + 'px'; $('#btn').click(function(){
$('p').animate({top:offsetTop},1000);
}) //2.获取匹配元素 相对滚动条卷起的位置信息 scrollTop scrollLeft // console.log($(document).scrollLeft());
// console.log($(document).scrollTop()); $(document).scroll(function(){
console.log($(document).scrollLeft());
console.log($(document).scrollTop());
}) // offset 获取匹配元素在当前视口的相对偏移 相对于浏览器,包含了padding内充距离 console.log($('#box').offset());
console.log($('p').offset().top);
console.log($('p').offset().left);
console.log($('#btn').offset().top); //获取元素的宽高 console.log("宽"+$('#box').width());
console.log("高"+$('#box').height()); //设置宽高
$('#box').width(400); //innerWidth / outerWidth
淘宝导航栏
$(function () {
var h = $('.top').height();
$(document).scroll(function () {
var scrollTop = $(document).scrollTop();
if (h<scrollTop){
$('.nav').css({'display':'block','position':'fixed','top':0})
}else{
$('.nav').css('display','none')
}
})
}) siblings筛选:筛选给定的同类同胞元素
$(function () {
$('li').hover(function () {
console.log('123');
// $(this).css({'color':'red','font-size':'20px'}).siblings('li').css({'color':'black','font-size':'12px'});
$(this).addClass('active').siblings('li').removeClass('active');
})
})
时间流:
“DOM2级事件”规定的事件流包括三个阶段:
① 事件捕获阶段;
② 处于目标阶段;
③ 事件冒泡阶段
阻止事件冒泡:
//1.阻止事件冒泡
ev.stopPropagation();
阻止默认事件
ev.preventDefault();
ev.stopPropagation();
事件的绑定和移除:
绑定:
function add(){
console.log('click');
} function add2(){
console.log('over');
} $('#box').bind({
"click":add,
"mouseover":add2
})
//添加的事件不能发生在未来==》动态生成的元素不能直接添加对象 里面的事件不能发生了 ==>事件代理
事件代理:
//事件代理 自己完成不了当前的点击事件,交给父级元素来做这件事件
//父级.on('事件名字','点击当前的标签元素',fn)
$('ul').on('click','li',function () {
alert('新来的');
}) $('ul').append('<li>我是新来的</li>');
自定义事件:trigger
$('button').bind('myClick',function(ev,a,b,c){
alert(111);
alert(a);
alert(b);
}) //触发自定义的事件
$('button').trigger('myClick',[1,2,3])
鼠标事件:
$("#box").click(function(){
console.log('click')
}) //双击事件
$("#box").dblclick(function(){
console.log('dbclick')
})
*/
/*
//鼠标按下不松开
$("#box").mousedown(function(){
console.log('mousedown');
}) //鼠标松开
$("#box").mouseup(function(){
console.log('mouseup');
})
*/
被选元素和子元素被选中时 会触发函数 移入和移出
/*
$('#box').mouseover(function(){
console.log('mouseover');
})
$('#box').mouseout(function(){
console.log('mouseout');
})
*/ /*
//只有被选元素移入的时候 才会触发
$('#box').mouseenter(function(){
console.log('mouseenter');
})
$('#box').mouseleave(function(){
console.log('mouseleave');
})
*/
/*获取焦点
$('input[type=text]').focus(function(){
console.log($(this).val())
}) /*失去焦点
$('input[type=text]').blur(function(){
console.log($(this).val())
})
*/ 键盘按下:
$('input[type=password]').keydown(function(e){
console.log(e.keyCode); if(e.keyCode == 13){
console.log('enter被按下了')
} // console.log($(this).val())
})
键盘松开
$('input[type=password]').keyup(function(){
console.log($(this).val())
})
表单事件:
$(function() { //change()s事件 //此事件仅限于input元素 textarea select
$('select').change(function(){
console.log($('select option:selected').text()); $('.show').text($('select option:selected').text()); }) // select() 仅限于用在 input type=text textarea
$('#other').select(function(){
console.log($(this).val());
}) $('form').submit(function(e){
//
//阻止默认事件
e.preventDefault(); //跟服务端有很大挂钩 下节课 咱们简单的来玩一下ajax技术 alert(1111);
})
ajax:
//get请求
$.ajax({
url:'./data.json',
type:'get',
// dataType:'json',
success:function(data){ console.log(data); },
error:function(){ }
})
*/ /*
//注意:post请求无法演示 马上学django 就可以演示了
$.ajax({
url:"/course",
type:'post',
data:{
username:'zhangsan',
password:'123'
},
success:function(data){ if(data.state == 'ok'&& data.status =='200'){
//登录成功
} },
error:function(err){
console.log(err);
}
})
*/
第五章jQuery的更多相关文章
- jQuery系列 第五章 jQuery框架动画特效
第五章 jQuery框架动画特效 5.1 jQuery动画特效说明 jQuery框架中为我们封装了众多的动画和特效方法,只需要调用对应的动画方法传递合适的参数,就能够方便的实现一些炫酷的效果,而且jQ ...
- 第五章 jQuery中的动画
通过jQuery中的动画方法,能轻松地为网页添加精彩的视觉效果,给用户一种全新体验. 1.show()方法和hide()方法 该方法的功能与css()方法设置display属性效果相同. 给show( ...
- jquery 第五章 jQuery操作表单与表格
1.回顾 对象.bind("事件名称",function(){ // }) 阻止冒泡事件 return false, event stopProapagation() 模拟事件 ...
- 第五章、前端之JQuery
目录 第五章.前端之JQuery 一.选择器 二.基本筛选器 三.样式操作 四.位置操作 五.文本操作 六.属性操作 七.文档处理 八.事件 九.动画效果 十.补充 第五章.前端之JQuery 一.选 ...
- 读《编写可维护的JavaScript》第五章总结
第五章 UI层的松耦合 5.1 什么是松耦合 在Web开发中,用户界面是由三个彼此隔离又相互作用的层定义的: HTML是用来定义页面的数据和语义 CSS用来给页面添加样式 JavaScript用来给页 ...
- 第7章 jQuery插件的使用和写法
第7章 jQuery插件的使用和写法 插件又称扩展,是一种遵循一定规范的应用程序接口写出来的程序. 插件的编写思想基于面向对象. 获取最新的插件可以查看jquery官网:http://plugins. ...
- 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务
http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth3 ...
- 第五章SignalR的实时高频通讯
第五章SignalR的实时高频通讯 概述:本例子演示了如果创建一个对象与其他浏览器共享实时状态的应用程序.我们要创建的应用程序为“MoveShape”,该MoveShape页面会显示一个Html Di ...
- Knockout应用开发指南 第五章:创建自定义绑定
原文:Knockout应用开发指南 第五章:创建自定义绑定 创建自定义绑定 你可以创建自己的自定义绑定 – 没有必要非要使用内嵌的绑定(像click,value等).你可以你封装复杂的逻辑或行为,自定 ...
随机推荐
- unity解压缩zip发布后的一些问题
前段时间项目需要,搞了下zip的解压缩问题,也是利用ICSharpCode.SharpZipLib.dll来处理的zip,这里说下之前遇到的坑(这里提供我用的这个库ICSharpCode.SharpZ ...
- Problem A: 让动物们叫起来吧!
Description Tom家里养了很多动物,比如有鸭子.火鸡和公鸡.它们的叫声都不相同.现在,请编写类Animal.Cock.Turkey和Duck,根据给出的main()函数及样例分析每个类的属 ...
- ionic 实现仿苹果手机通讯录搜索功能
前言 由于之前做的SRM移动应用采用的是ionic1.x框架进行开发的,由于性能方便的诟病,导致用户体验不是很友好,于是想着怎么样去提高应用的性能问题.此时刚好ionic3.x框架已发布,由于ioni ...
- 酷学习笔记——ASP.NET Core 简介
ASP.NET Core 简介 其实就是说酷好,不好好学,不学好,没饭吃. 新词汇:IoT,Internet of Things,网联网,微软物联网英文网站.微软物联网中文网站
- 配置Nim的默认编译参数 release build并运行
配置Nim的默认编译参数 release build并运行 默认情况下nim编译是debug build,如果需要release build, 需要加上-d:release , release编译的命 ...
- 收藏nginx学习
http://blog.csdn.net/u012186351/article/details/50605672 http://blog.csdn.net/qq_25371579/article/de ...
- IP通信基础课堂笔记----关于数链层
课前回顾 IOS从上到下分别有:应用层,传输层,网络层,数链层,物理层. IP是网络层的地址,MAC是数链层的地址,IP必须通过ARP才能转换成MAC地址. 课堂内容 1.如何在数链层实现发送端数据无 ...
- zabbix添加IIS网站计数器(并发连接数)详解
环境:windows server 2012 前提:IIS上要添加好配置 1,在被监控主机,powershell输入perfmon.msc 2,点击添加按钮 3,在下拉菜单中点击小箭头 ...
- 安装MySql 8.x版本客户端连接失败解决方案
---恢复内容开始--- 安装完8.0.11MySql数据库及客户端工具Navicat Premium 12(具体安装方法不详细赘述,自行百度,推荐网址:https://blog.csdn.net/c ...
- Windows下网页连接VNC操作手册
所需软件:tigervnc noVnc(https://github.com/novnc/noVNC) websockify(https://github.com/novnc/websockify) ...