2016年4月3日

第4章 jq中的事件和动画

4.1 jq中的事件

(1)window.onload、$(documet).ready()的区别:

1.执行时机:window.onload需要整个页面加载完毕后才能运行脚本,而$(documet).ready()只需要dom树加载完毕便可以进行jq操作。

2.使用次数:window.onload只能使用一次,而$(documet).ready()可以使用多次且都可以得到执行。

(2)$(documet).ready() 三种简写方式:

Jquery ready 函数:

$(document).ready(function(){
alert('I am ready. keleyi.com');
}
); 简写为: $(function(){
alert("I am ready. keleyi.com");
}
); 即 $(document).ready();
等同于
$();

(3)bind绑定事件:

  • 可以发现,jq中的事件绑定类型比普通的javascript事件绑定类型少了"on"。
  • 常使用简写方式

(4)合成事件

hover():模拟光标悬停事件。

mouseover与mouseenter

  • 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。
  • 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。

mouseout与mouseleave

  • 不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
  • 只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。

toggle():模拟鼠标连续单击事件。

toggle() 方法切换元素的可见状态。

(5)事件冒泡

  • 表单中event.preventDefault、冒泡事件中的event.stopPropagation(),都可以用return false替换以达到阻止事件冒泡效果。

(6)事件捕获:是与事件冒泡相反的过程,事件捕获是从最顶端往下开始触发。

特别的:

  • 并非所有主流浏览器都支持事件捕获,并且这个缺陷无法通过javascript来修复。
  • jq不支持事件捕获,如果需要,请直接使用原生javascript。

(7)事件对象的属性

  • event.type
  • event.preventDefault
  • event.stopPropagation
  • event.target
  • event.pageX和event.pageY
  • event.which
  • event.metaKey

(8)移除事件

$().unbind();

(9)模拟操作

(10)其他用法

4.2 jq中的动画

(1)show()和hide()方法

  • show()、hide()是jq中最基本的动画方法。
  • 某元素调用该方法会使得该元的display样式改为"none"或者"block"。
  • 值得注意的是:hide()会记住元素原先的display属性,当调用show()时,会根据hide()记住的属性值来显示元素。
  • show()、hide()方法在不带任何参数的情况下,相当于css("display","none/block/inline")。
    $("element").hide();
    $("element").css("display","none");
    //以上两种方法等效
  • show()、hide()方法有一个参数代表动作的耗时:
    $("element").show(1000);
    $("element").hide(1000);

(2)fadeIn()、fadeOut()

  • fadeOut():会在指定的时间内降低透明度,直到元素完全消失("display:none");,fadeIn()方法则相反。
  • 即淡入淡出的效果

(3)slideUp()、slideDown()

  • slideUp()、slideDown()只会改变元素的高度。
  • 如果一个元素的display属性值为"none",当调用slideDown()时,这个元素将由上至下延伸显示,slideUp()则与之相反。

jQuery中的任何动画效果,都可以指定是种速度参数,即“slow”“normal”和“fast”(事件长度分别为0.6秒、0.4秒、0.2秒)。当使用速度关键字时要加引号,输入使用数字作为事件参数则无需引号。

$("element").show("slow");
$("element").show(10000);

(4)自定义动画方法animate()

由于上述三类动画方法无法满足各种各样的动画需求,于是有了animate()方法来自定义动画,其语法结构如下:

animate( params , speed , callback );

必需的 params 参数定义形成动画的 CSS 属性。

可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。

可选的 callback 参数是动画完成后所执行的函数名称。

详情请访问:http://www.w3school.com.cn/jquery/jquery_animate.asp

(5)p131 动画方法概括

4.3 视频展示效果实例

2016年4月2日

第3章 jq中的dom操作

3.1分类

(1)dom core

(2)html-dom

(3)css-dom

3.2 jq dom具体操作

1."增删改查"api

待实例化:

(1)如果给一个元素添加多个class值,那么就相当于合并了它们的样式

(2)如果有不同的class设定了同一个属性,则后者覆盖前者。

2.p78 attr()和addClass()的区别:

本质:前者会覆盖class值;后者则是是add即添加。

3.设置和获取html、文本和值

(1)html()

(2)text()

(3)val()

4.demo——yahoo邮箱登录框的提示效果

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<script type="text/javascript" src="框架/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(function() {
//对地址进行操作
$("#address").focus(function() {
var txt_value = $(this).val();
if(txt_value=="请输入邮箱地址");
$(this).val("");
});
$("#address").blur(function() {
var txt_value = $(this).val();
if(txt_value=="");
$(this).val("请输入邮箱地址");
}); //对密码框进行操作
$("#password").focus(function() {
var txt_value = $(this).val();
if(txt_value=="请输入邮箱密码");
$(this).val("");
});
$("#password").blur(function() {
var txt_value = $(this).val();
if(txt_value=="");
$(this).val("请输入邮箱密码");
});
});
</script>
</head>
<body>
<input type="text" id="address" value="请输入邮箱地址" />
<input type="text" id="password" value="请输入邮箱密码" />
<input type="button" value="登陆" />
</body>
</html>

3.3 网站的超链接和图片提示效果

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<script type="text/javascript" src="框架/jquery-1.3.1.js"></script>
<script type="text/javascript">
$(function() {
var x = 10;
var y = 20;
$("a.tooltip").mouseover(function(e) {
this.myTitle = this.title;
this.title = "";
var imgTitle = this.myTitle?"<br />"+this.myTitle:"";
var tooltip = "<div id='tooltip'><img src='"+ this.href +"' alt='产品预览图'/>"+imgTitle+"</div>"; //创建 div 元素
$("body").append(tooltip); //追加至文档
$("#tooltip")
.css({
"top":(e.pageY+y) + "px",
"left":(e.pageX+x) + "px"
}).show("fast");
}).mouseout(function() {
this.title = this.myTitle;
$("#tooltip").remove(); //从文档删除
}).mousemove(function(e) {
$("#tooltip")
.css({
"top":(e.pageY+y) + "px",
"left":(e.pageX+x) + "px"
});
});
})
</script>
<style type="text/css">
* {margin: 0;padding: 0;font-size: 18px;}
/* tooltip */
#tooltip{
position:absolute;
border:1px solid #ccc;
background:#333;
padding:2px;
display:none;
color:#fff;
}
body{
margin:0;
padding:40px;
background:#fff;
font:80% Arial, Helvetica, sans-serif;
color:#555;
line-height:180%;
}
img{border:none;}
ul,li{
margin:0;
padding:0;
}
li{
list-style:none;
float:left;
display:inline;
margin-right:10px;
border:1px solid #AAAAAA;
}
</style>
</head>
<body>
<ul>
<li><a href="images/apple_1_bigger.jpg" class="tooltip" title="苹果 iPod"><img src="data:images/apple_1.jpg" alt="苹果 iPd" /></a></li>
<li><a href="images/apple_2_bigger.jpg" class="tooltip" title="苹果 iPod nano"><img src="data:images/apple_2.jpg" alt="苹果 iPod nano"/></a></li>
<li><a href="images/apple_3_bigger.jpg" class="tooltip" title="苹果 iPhone"><img src="data:images/apple_3.jpg" alt="苹果 iPhone"/></a></li>
<li><a href="images/apple_4_bigger.jpg" class="tooltip" title="苹果 Mac"><img src="data:images/apple_4.jpg" alt="苹果 Mac"/></a></li>
</ul>
</body>
</html>

2016年4月1日

1.p51 如果你的项目较早的使用了jq代码或插件,若把jq升级到最新后,出错或者不能运行,那么很有可能是因为代码中使用了属性选择器的@符号而引起的。

2.p52 带空格与否的问题

var $t_a = $('.test :hidden');

以上代码是选取class为"test"的元素里面的隐藏元素
var $t_b = $('.test:hidden');

以上代码是选取隐藏的class为"test"的元素

3.$a.click(){return false}; //超链接不跳转(之前在《js dom编程艺术》一书中学到过,再次巩固)

4.其他选择器

jQuery的选择器插件扩展

(1)MoreSelectors for jQuery

(2)Basic XPath

其他使用css选择器的方法

(1)document.getElenmentsBySelector()

(2)cssQuery()

(3)querySelectorAll()

2016年3月31日

1.$=jQuery

2.p13 jq对象和dom对象的转换方法

3.p14 $()函数就是一个jquery对象的制造工厂

4.p27 $("#id")获取的永远是对象,所以不需要担心会出错,仅仅考虑length值,为1时,do something。

5.p50 一系列精准的选择器

6.p51 利用jq来改写前面的例子,然后进行列表效果实现,待练习

春上来 尺八 乐谱

6 .3 .2

<读书笔记>《锋利的jQuery》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. Scala函数高级操作

    字符串高级操作:***** 非常重要 将函数赋值给变量/值def sayHello(name:String): Unit = { println(s"Hello:$name")} ...

  2. 一波骚操作,我把 SQL 执行效率提高了 10,000,000 倍!

    作者:风过无痕-唐 http://www.cnblogs.com/tangyanbo/p/4462734.html 场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表: create  ...

  3. pjhp实现使用redis来存储session数据

    #设置php处理session的方式为redis,并配置redis的访问地址(因为在redis中绑定的访问地址为127.0.0.1,所以就没有设置访问密码,如果需要请自行搜索)#因为不想修改php.i ...

  4. [C++] 所有该类的对象共享静态类成员变量

    问:智能指针可以对指针的引用数量进行计数,一个智能指针释放时,别的智能指针怎么知道的? 同一类的对象共享同一变量最简单的方法是静态变量: 不像普通的变量,静态成员变量是被所有类对象共享的,不同的对象可 ...

  5. Django 配置 qq 邮箱发送邮件

    目录 一.实验环境 二.获取QQ邮箱授权码 1.什么是授权码? 2.怎么获取授权码? 三.Django中配置 setting.py中添加如下代码 文本邮件 HTML 邮件 一.实验环境 Python3 ...

  6. 判断是否为PC

    function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android", " ...

  7. vue新建项目之饿了么组件标准配置

    main.js import Vue from 'vue' import App from './App.vue' import ElementUI from 'element-ui'; import ...

  8. apache2 配置入门

    ServerRoot "/usr/local/apache2" #服务器根目录 Listen #监听端口 语法格式为Listen [IP地址:]端口 [协议],其中IP地址与协议为 ...

  9. Codeforces 814C - An impassioned circulation of affection

    原题链接:http://codeforces.com/contest/814/problem/C 题意:有长度为n的一个字符串,q个询问,每个询问由数字m和字符c组成,问最多在字符串中替换m个字符,使 ...

  10. 连载 3:利用 matlab计算卷积