知识点预习
-
1.幻灯片的制作2.json数据格式及ajax
01- 轮播图-获取相关元素
[AppleScript]
纯文本查看
复制代码
1
2
3
4
5
6
|
var $slide
=
$
(
'.slide'
)
,
/
/
轮播区域的
div
$slideList
=
$
(
'.slide_list'
)
,
/
/
轮播列表
$lis
=
$
(
'.slide_list li'
)
,
/
/
轮播中的四个li
$prevBtn
=
$
(
'.prev'
)
,
/
/
上一张按钮
$nextBtn
=
$
(
'.next'
)
,
/
/
下一张按钮
$pointsList
=
$
(
'.points'
)
;
/
/
小圆点列表
|
2- 轮播图-添加小圆点
[AppleScript]
纯文本查看
复制代码
1
2
3
4
5
6
7
|
/
/
[
/
size][
/
font
]
[
font
=
微软雅黑][size
=
3
]
1.
根据图片张数动态添加小圆点
for
(
var i
=
0
; i
<
iPicCount; i
+
+
)
{
$pointsList.append
(
'
<
li
>
<
/
li
>
'
)
;
}
/
/
1.1
默认第
0
个小点高亮
$pointsList.children
(
'
:
first
'
)
.addClass
(
'active'
)
;
|
轮播图-监听小圆点事件 - 下一张
[AppleScript]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/
/
[
/
size][
/
font
]
[
font
=
微软雅黑][size
=
3
]
2.
动画前的准备除了第一张 其它 都放到
760
的位置
$lis.
not
(
'
:
first
'
)
.css
(
{
'left'
:
760
}
)
;
var iNowIndex
=
0
;
/
/
即将要上显示的这一张
var iPreviousIndex
=
0
;
/
/
上一张
,
也是要让位置的这一张
/
/
2.1
点击小圆点进行图片移动动画
$pointsList.delegate
(
'li'
,
'click'
,
function
(
)
{
/
/
记录即将要显示的图片索引
iNowIndex
=
$
(
this
)
.
index
(
)
;
/
/
动画移动
fnMoveAnmation
(
)
;
}
)
;
/
/
公共函数
function fnMoveAnmation
(
)
{
/
/
小圆点高亮处理
$pointsList.children
(
)
.eq
(
iNowIndex
)
.addClass
(
'active'
)
.siblings
(
)
.removeClass
(
'active'
)
;
/
/
显示下一张
if
(
iNowIndex
>
iPreviousIndex
)
{
/
/
让当前显示的图片从
0
移动到左边
-760
为要出现的让位置
$lis.eq
(
iPreviousIndex
)
.animate
(
{
'left'
:
-760
}
)
;
/
/
让要出现的图片从原本的
760
位置移动到
0
的位置
$lis.eq
(
iNowIndex
)
.animate
(
{
'left'
:
0
}
)
;
/
/
记录这一次显示的索引 作为下一次动画时要让位置的索引
iPreviousIndex
=
iNowIndex;
}
}
|
轮播图-小圆点事件 - 上一张
[AppleScript]
纯文本查看
复制代码
1
|
xxxxxxxxxx
else
{
/
/
显示上一张
/
/
动画从左边向右移动的准备 $lis.eq
(
iNowIndex
)
.css
(
{
'left'
:
-760
}
)
;
/
/
让当前显示的图片从
0
移动到右边
760
位置 $lis.eq
(
iPreviousIndex
)
.animate
(
{
'left'
:
760
}
)
;
/
/
让要显示的图片从原本
-760
的位置移动到
0
的位置 $lis.eq
(
iNowIndex
)
.animate
(
{
'left'
:
0
}
)
;
/
/
记录这一次显示的索引 作为下一次动画时要让位置的索引 iPreviousIndex
=
iNowIndex;
}
|
轮播图-跨越式点击的BUG解决
-
重复点击同一个小点时bug
-
[AppleScript] 纯文本查看 复制代码123
function fnMoveAnmation
(
)
{
/
/
如果重复点击小点什么也不做
if
(
iNowIndex
=
=
iPreviousIndex
)
return
;
-
[AppleScript] 纯文本查看 复制代码1234567
从右向左边滑动时
/
/
解决跨越式点击BUG
:
抢先一步 将要出现的图片 丢到他该出现的位置
760
$lis.eq
(
iNowIndex
)
.css
(
{
"left"
:
760
}
)
从左向右边滑动时
/
/
解决跨越式点击BUG
:
抢先一步 将要出现的图片 丢到他该出现的位置
-760
$lis.eq
(
iNowIndex
)
.css
(
{
"left"
:
-760
}
)
- 轮播图-监听左边按钮的点击
-
[AppleScript] 纯文本查看 复制代码123456
/
/
3.
点击左边上一张按钮
$prevBtn.click
(
function
(
)
{
iNowIndex
--;
fnMoveAnmation
(
)
;
}
)
- 轮播图-右侧按钮的点击
-
[AppleScript] 纯文本查看 复制代码12345
/
/
4.
点击右边下一张按钮
$nextBtn.click
(
function
(
)
{
iNowIndex
+
+
;
fnMoveAnmation
(
)
;
}
)
- fnMoveAnmation函数的调整
-
[AppleScript] 纯文本查看 复制代码0102030405060708091011121314151617181920
/
/
如果最后一张后继续点击右边按钮
,
应该向左移动的方式来显示第
0
张
if
(
iNowIndex
>
iPicCount
-
1
)
{
/
/
下一张时
:
最后一张的下一张是第
0
张
iNowIndex
=
0
;
/
/
动画从右边向左移动的准备
$lis.eq
(
iNowIndex
)
.css
(
{
'left'
:
760
}
)
;
/
/
让当前显示的图片从
0
移动到左边
-760
为要出现的让位置
$lis.eq
(
iPreviousIndex
)
.animate
(
{
'left'
:
-760
}
)
;
}
else if
(
iNowIndex
<
0
)
{
/
/
如果是第
0
张时继续点击左边上一张按钮
/
/
上一张时
:
第
0
张的上一第应该是最后一张
iNowIndex
=
iPicCount
-
1
;
/
/
动画从左边向右移动的准备
$lis.eq
(
iNowIndex
)
.css
(
{
'left'
:
-760
}
)
;
/
/
让当前显示的图片从
0
移动到右边
760
位置
$lis.eq
(
iPreviousIndex
)
.animate
(
{
'left'
:
760
}
)
;
}
else
{
/
/
把正常情况下的左右滚动代码放在
else
里面
}
- 轮播图- 左右按钮快速点击的bug
-
动画还没有执行完,点击左右按钮什么事件也不做
-
bIsAnmation = false; // 是否正在动画中
-
左右按钮点击事件中加入如果动画中直接返回
-
进入fnMoveAnmation里时把bIsAnmation改为true
-
最后的动画执行完成的回调中把bIsAnmation再改回为false;
- 轮播图-自动播放
-
[AppleScript] 纯文本查看 复制代码12345678
/
/
自动滚动
function fnAutoMove
(
)
{
iNowIndex
+
+
;
fnMoveAnmation
(
)
;
}
/
/
5.
定时器自动滚动
var oTimer
=
setInterval
(
fnAutoMove
,
3000
)
;
- 轮播图-鼠标事件
-
[AppleScript] 纯文本查看 复制代码12345678
/
/
6.
鼠标的事件
$slide.mouseenter
(
function
(
)
{
clearInterval
(
oTimer
)
;
}
)
;
$slide.mouseleave
(
function
(
)
{
oTimer
=
setInterval
(
fnAutoMove
,
3000
)
;
}
)
- JSON概述和书写格式
-
JSON是 JavaScript Object Notation 的首字母缩写,单词的意思是JavaScript对象表示法,这里说的JSON指的是类似于JavaScript对象的一种数据格式,目前这种数据格式比较流行,逐渐替换掉了传统的XML数据格式。
-
JSON格式的数据:
-
[AppleScript] 纯文本查看 复制代码1234
{
"name"
:
"tom"
,
"age"
:
18
}
- 与JavaScript对象不同的是,JSON数据格式的属性名称和字符串值需要用双引号引起来,用单引号或者不用引号会导致读取数据错误。
-
[AppleScript] 纯文本查看 复制代码1
[
"tom"
,
18
,
"programmer"
]
- 3- ajax加载JSON数据
-
$.ajax使用方法
-
常用参数:
-
1、url 请求地址2、type 请求方式,默认是'GET',常用的还有'POST' 3、dataType 设置返回的数据格式,常用的是'json'格式,也可以设置为'html' 4、data 设置发送给服务器的数据 5、success 设置请求成功后的回调函数 6、error 设置请求失败后的回调函数 7、async 设置是否异步,默认值是'true',表示异步
-
-
以前的写法:
-
[AppleScript] 纯文本查看 复制代码010203040506070809101112
$.ajax
(
{
url
:
'js
/
data
.json'
,
type
:
'GET'
,
dataType
:
'json'
,
data
:
{
'aa'
:
1
}
success
:
function
(
data
)
{
alert
(
data
.
name
)
;
}
,
error
:
function
(
)
{
alert
(
'服务器超时,请重试!'
)
;
}
}
)
;
- 新的写法(推荐):
-
[AppleScript] 纯文本查看 复制代码0102030405060708091011121314
$.ajax
(
{
url
:
'js
/
data
.json'
,
type
:
'GET'
,
dataType
:
'json'
,
data
:
{
'aa'
:
1
}
}
)
.done
(
function
(
data
)
{
alert
(
data
.
name
)
;
}
)
.fail
(
function
(
)
{
alert
(
'服务器超时,请重试!'
)
;
}
)
;
/
/
data
.json里面的数据:
{
"name"
:
"tom"
,
"age"
:
18
}
- ajax天天生鲜局部刷新
-
准备好要请求的JSON数据
-
请求后先验证数据,再写功能代码
-
ajax只能请求同一个域下的数据或资源,有时候需要跨域请求数据,就需要用到jsonp技术,jsonp可以跨域请求数据,它的原理主要是利用了script标签可以跨域链接资源的特性。jsonp和ajax原理完全不一样,不过jQuery将它们封装成同一个函数。
-
-
[AppleScript] 纯文本查看 复制代码1
xxxxxxxxxx $.ajax
(
{
url
:
'js
/
data
.js'
,
type
:
'
get
'
,
dataType
:
'jsonp'
,
jsonpCallback
:
'fnBack'
}
)
.done
(
function
(
data
)
{
alert
(
data
.
name
)
;
}
)
.fail
(
function
(
)
{
alert
(
'服务器超时,请重试!'
)
;
}
)
;
/
/
data
.js里面的数据: fnBack
(
{
"name"
:
"tom"
,
"age"
:
18
}
)
;
- 仿360搜索
-
[AppleScript] 纯文本查看 复制代码010203040506070809101112131415161718192021
$
(
function
(
)
{
$
(
'
#txt01').keyup(function(){
var sVal
=
$
(
this
)
.val
(
)
;
$.ajax
(
{
url
:
'https
:
/
/
sug.so.
360.
cn
/
suggest'
,
type
:
'
get
'
,
dataType
:
'jsonp'
,
/
/
给服务器传递参数
data
:
{
word
:
sVal
}
}
)
.done
(
function
(
data
)
{
var aData
=
data
.s;
$
(
'.
list
'
)
.
empty
(
)
;
for
(
var i
=
0
;i
<
aData.length;i
+
+
)
{
var $li
=
$
(
'
<
li
>
'
+
aData[i]
+
'
<
/
li
>
'
)
;
$li.appendTo
(
$
(
'.
list
'
)
)
;
}
}
)
}
)
}
)
-
-
-