可扩展的简易点击展开/关闭效果,分别用原生JavaScript和jQuery实现.使用方法及相关解释,请参见源码.
另,授人以鱼,不如授人以渔.我写的只是一个原型,提供一个思路一种方法.注释中我也注明了,如果你想要酷炫的效果,你可以根据自己的实际需求扩展.
查看演示: 点此查看DEMO
原生JS版本:
window.onload = function(){
var divs = document.getElementsByTagName('div');//找到所有div元素
for (var i = 0; i < divs.length; i++) {
if (divs[i].className != 'jsdemo')
continue;//如果元素class值不是jsdemo,继续查找
//divs[i].style.display='none'; //如果你想默认是隐藏状态,可取消此行注释
var title = divs[i].previousSibling;//通过上一个元素定位到标题元素
if (title.nodeType != 1) { //为了确保找到的是元素节点
title = title.previousSibling;
}
title.next = divs[i]; //设置标题的next属性并指向div[i]
title.onclick = function(){//点击事件
var curStyle = this.next.style.display;//取div[i]的默认display值,现在知道title.next的用意了吧
var newStyle;//定义新的display值
var ico = title.getElementsByTagName('span')[0];//包含展开关闭按钮的节点
if (curStyle == 'none') {//取反实现点击的展开关闭
newStyle = 'block';//当默认值是隐藏时,切换成可见
ico.innerHTML = '-';//切换展开关闭按钮
}
else {
newStyle = 'none';//当默认值是可见时,切换成隐藏
ico.innerHTML = '+';//切换展开关闭按钮
};
title.next.style.display = newStyle;//为点击后的div[i]赋值
}
}
}
JQ版本:
$(function(){
var $title = $('div.jqdemo');//找到要显示/隐藏的元素
//$title.hide(); //如果你想默认是隐藏状态,可取消此行注释,下面两个切换函数换位
$title.prev().toggle(function(){//为显示/隐藏元素的前一个元素(取出标题元素)设置点击切换事件
$title.hide().prev().find('span').text('+');//第一次点击时,隐藏div元素,并找到标题元素中的span,切换按钮
}, function(){
$title.show().prev().find('span').text('-');//第二次点击时,显示div元素,并找到标题元素中的span,切换按钮
});
//JQ的代码是不是简洁漂亮的多.哈哈.几句代码就搞定了.通过修改show()/hide()还可以得到很炫酷的效果
});
不错哦,非常实用,多谢LZ分享~~
[回复]
谢谢分享,这个站太好了
[回复]
mrthink.net的文章总是这么有感觉,谢谢分享了。
[回复]
很喜欢贵博客,不知可否交换一下链接,方便以后多来学习。
我是一个web前端学习者,呵呵
网站:web前端寒风 http://www.webbise.com
贵博客已经加好!
[回复]
Mr.Think 回复:
八月 4th, 2010 at 09:30
@web前端寒风, okay,已加上.
[回复]
感觉有点硬邦邦的,smooth点就好啦。
[回复]
Mr.Think 回复:
八月 3rd, 2010 at 09:35
@guny, 为什么你不思考一下怎么实现比较柔滑的效果呢? 授人以鱼,不如授人以渔.我写的只是一个原型,提供一个思路一种方法.注释中我也注明了,如果你想要酷炫的效果,你可以根据自己的实际需求扩展.
[回复]
博客弄的不错啊 背景很漂亮啊,比上次来看到的漂亮多了啊 加油啊 回踩***(www.***.cn)
[回复]
Mr.Think 回复:
八月 2nd, 2010 at 16:29
@升降机, 感谢你对本站的支持,但本站不接受任何商业性质的链接或宣传,故将你评论中的相关信息用*替代.抱歉.
另,本站自始至终均为当前风格,未曾大的改动.以技术分享为主,不倚重于界面.
[回复]