JQuery toggle使用分析


Posted in Javascript onNovember 16, 2009

今天重点一个toggle(fn,fn,….)函数,主要是用来切换某个事件的轮换操作。
比如:对一个按钮的点击事件和一个DIV的背景,点击一次按钮,将DIV的背景显示为蓝色,点击第二次的时候要将DIV的
背景色改为黑色。
我们定义的HTML代码如下:
<body>
<input type="button" id="btnShow" value="Toggle"/>
<div id="DivToggle">此处显示 id "DivToggle" 的内容</div>
</body>
定义的最初的样式如下:

#DivToggle { 
height: 150px; 
width: 200px; 
margin: 50px; 
background-color: #6CC; 
}

在toggle(fn,fn,….);先明白一个toggle()的函数,主要是用来切换元素的显示状态。如果一个元素是显示的,那么调用.toggle()之后就变得隐藏了。

JQuery代码:

<script type="text/javascript"> 
$( 
function() { 
$("#btnShow").click(function(event) { 
$("#DivToggle").toggle(); 
}); 
} 
); 
</script>

点击按钮之后DIV隐藏,再次点击DIV显示,然后循环。

这里我们可以手动设置元素的显示和隐藏,显示:toggle(true);隐藏:toggle(false);

我们还可以为元素的隐藏和显示设置速度。

$("#DivToggle").toggle(600);

当然到这里我们可以想到我们经常在网页中碰到的将鼠标移上去显示出来,然后鼠标移开则隐藏掉的效果。

这里当然用到了一个hover(fnover,fnout)事件。我们只要将fnover,和fnout设置为以上的toggle(600)即可;

这里的fnover是鼠标移上去的事件函数, fnout是鼠标移开的事件函数。

我们将toggle(600)单独设置为一个函数来调用,这样看起来代表比较易读。

<script type="text/javascript"> 
$( function(event) { 
$("#btnShow").hover(OverOut, OverOut); 
function OverOut(event) { 
$("#DivToggle").toggle(600); 
} 
} 
); 
</script>

这样我们把鼠标移动到按钮上面,然后移开,就可以看到DivToggle的隐藏和显示的效果了。

为了演示toggle(fn,fn,…)是轮换操作的,我们使用上面的一个函数,然后再加一个使用btnShow的Click事件先隐藏显示DIV,然后该表DIV的样式。

显示隐藏的代码可以这样(事实上这段代码是有问题的,但是居然这样写也能实现要的效果):

<script type="text/javascript"> 
$( 
function(event) { 
function OverOut(event) { 
$("#DivToggle").toggle(600); 
} 
$("#DivToggle").toggle(function() { 
$("#btnShow").click(OverOut); 
}, function() { 
$("#btnShow").click(OverOut); 
}); 
} 
); 
</script>

回过头来看这段代码觉得很有问题,本身toggle(fn,fn,…)是用来给指定的元素加上Click事件,然后再对这个元素循环做toggle
里面的那些函数。突然感觉有点搅在那里了。像麻花一样。望牛牛能解释一下。
这样为了演示toggle的轮循函数的效果就没有办法,通过单击按钮,再改变Div的样式了。
改变DIV样式的代码这样:
<script type="text/javascript"> 
$( 
function(event) { 
function OverOut(event) { 
$("#DivToggle").toggle(600); 
} 
$("#DivToggle").toggle(function() { 
$(this).click(function() { $(this).css("background", "Blue"); }); 
}, function(event) { 
$(this).click(function() { $(this).css("background", "Green"); }); 
}); 
} 
); 
</script>

到这里我突然想到,要实现以上的效果,那就直接把事件加载到按钮上,也就是”btnShow”上面也就是先隐藏显示,然后改变DIV的样式。详细的代码如下:
<script type="text/javascript"> 
$( 
function(event) { function OverOut(event) { 
$("#DivToggle").toggle(600); 
} 
$("#btnShow").toggle( 
OverOut, OverOut, 
function() { $("#DivToggle").css({ "background": "Green" }); }, 
function() { $("#DivToggle").css({ "background": "Blue" }); } 
); 
} 
); 
</script>

这样能实现以上要的效果,就是先隐藏,再显示,再改变样式。
Javascript 相关文章推荐
高亮显示web页表格行的javascript代码
Nov 19 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
Jul 31 Javascript
javascript中的注释使用与注意事项小结
Sep 20 Javascript
更优雅的事件触发兼容
Oct 24 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
Jun 24 Javascript
PHP结合jQuery实现红蓝投票功能特效
Jul 22 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
Jan 19 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
Sep 28 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
Jan 18 Javascript
如何给element添加一个抽屉组件的方法步骤
Jul 14 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
Aug 31 Javascript
JavaScript OOP类与继承
Nov 15 #Javascript
JavaScript的eval JSON object问题
Nov 15 #Javascript
Javascript 中文字符串处理额外注意事项
Nov 15 #Javascript
JavaScript 语法集锦 脚本之家基础推荐
Nov 15 #Javascript
Dojo 学习笔记入门篇 First Dojo Example
Nov 15 #Javascript
flash 得到自身url参数的代码
Nov 15 #Javascript
javascript 去字符串空格终极版(支持utf8)
Nov 14 #Javascript
You might like
php对数组排序代码分享
2014/02/24 PHP
php文件上传简单实现方法
2015/01/24 PHP
用PHP代码给图片加水印
2015/07/01 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
python读取注册表中值的方法
2013/04/08 Python
深入解析Python中的线程同步方法
2016/06/14 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
柏林通行证:Berlin Pass
2018/04/11 全球购物
追悼会子女答谢词
2014/01/28 职场文书
政工例会汇报材料
2014/08/26 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript