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 类twitter的文本字数限制带提示效果插件
Apr 16 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
基于jquery的滚动鼠标放大缩小图片效果
Oct 27 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 Javascript
jquery跟js初始化加载的多种方法及区别介绍
Apr 02 Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 Javascript
JS实现图片放大镜效果的方法
Feb 27 Javascript
javascript点击按钮实现隐藏显示切换效果
Feb 03 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
Oct 13 Javascript
jQuery+ajax实现局部刷新的两种方法
Jun 08 jQuery
详解js正则表达式验证时间格式xxxx-xx-xx形式
Feb 09 Javascript
js实现移动端轮播图滑动切换
Dec 21 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
星际RPG字典
2020/03/04 星际争霸
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
php 输出双引号&quot;与单引号'的方法
2010/05/09 PHP
深入解析php中的foreach问题
2013/06/30 PHP
PHP中的替代语法简介
2014/08/22 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python Canny边缘检测算法的实现
2020/04/24 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
2015年检验员工作总结范文
2015/04/30 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js
Python pyecharts绘制条形图详解
2022/04/02 Python
Promise静态四兄弟实现示例详解
2022/07/07 Javascript