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 相关文章推荐
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
Dec 08 Javascript
JavaScript中两个感叹号的作用说明
Dec 28 Javascript
js实现图片旋转的三种方法
Apr 10 Javascript
javascript框架设计读书笔记之种子模块
Dec 02 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
Sep 05 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
Jan 12 Javascript
Vue-Router实现页面正在加载特效方法示例
Feb 12 Javascript
JavaScript获取URL参数的方法之一
Mar 24 Javascript
node简单实现一个更改头像功能的示例
Dec 29 Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 Javascript
如何使用JavaScript实现栈与队列
Jun 24 Javascript
vue实现下拉加载其实没那么复杂
Aug 13 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简单系统查询模块代码打包下载
2008/06/07 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
简单了解python模块概念
2018/01/11 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
python常用运维脚本实例小结
2020/02/14 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
学生手册家长评语
2014/02/10 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
六一儿童节活动总结
2014/08/27 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
python垃圾回收机制原理分析
2022/04/13 Python
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL