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 相关文章推荐
告诉大家什么是JSON
Jun 10 Javascript
ASP中进行HTML数据及JS数据编码函数
Nov 11 Javascript
js客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
Sep 22 Javascript
javascript中的altKey 和 Event属性大全
Nov 06 Javascript
利用css+原生js制作简单的钟表
Apr 07 Javascript
AngularJS延迟加载html template
Jul 27 Javascript
jquery实现全选、全不选以及单选功能
Mar 23 jQuery
JavaScript纯色二维码变成彩色二维码
Jul 23 Javascript
详解Vue组件之间的数据通信实例
Jun 17 Javascript
web前端vue filter 过滤器
Jan 12 Javascript
微信小程序实现点赞、取消点赞功能
Nov 02 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迭代器实现斐波纳契数列的函数
2013/11/12 PHP
PHP代码优化的53个细节
2014/03/03 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
Js 中debug方式
2010/02/07 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
React实现轮播效果
2020/08/25 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
django中模板的html自动转意方法
2018/05/27 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
大学生村官典型材料
2014/01/12 职场文书