原生JS版和JQ版--点击展开/关闭效果

原生js版和jq版--点击展开/关闭效果

可扩展的简易点击展开/关闭效果,分别用原生网页特效和jquery实现.使用方法及相关解释,请参见源码.
另,授人以鱼,不如授人以渔.我写的只是一个原型,提供一个思路一种方法.注释中我也注明了,如果你想要酷炫的效果,你可以根据自己的实际需求扩展.

jquery

$(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()还可以得到很炫酷的效果
});

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]赋值
        }
    }
}

完整实例

<div id="demo">
<h2><span>-</span>简易点击展开关闭效果[原生js版]@mr.think</h2>
<div class="jsdemo">
 <p>name:mr.think</p>
 <p>blog:http://mrthink.net</p>
 <p>date:2010.08.01</p>
</div>
<br />
<br />
<h2><span>-</span>简易点击展开关闭效果[jq版]@mr.think</h2>
<div class="jqdemo">
 <p>name:mr.think</p>
 <p>blog:http://mrthink.net</p>
 <p>date:2010.08.01</p>
</div>

</div>
<!--demo end-->
<!--@mr.think的统计及广告代码,使用样例请勿复制:)-->
<div id="adsense">
</div>

 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<style>
/*demo css教程*/
#demo h2{background:#eee;font-size:12px;text-indent:10px; line-height:25px; border:2px solid #eee; cursor:pointer}
#demo h2 span{font-size:16px;float:right;margin-right:10px;}
#demo div{ text-indent:10px; line-height:22px;border:2px solid #eee; border-top:0;padding:0.5em}
</style>
<script>
/**
 www.111cn.net
 */
//原生js版本@mr.think
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版本@mr.think
$(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()还可以得到很炫酷的效果
});
</script>

时间: 2024-08-15 22:25:54

原生JS版和JQ版--点击展开/关闭效果的相关文章

js操作css属性实现div层展开关闭效果的方法_javascript技巧

本文实例讲述了js操作css属性实现div层展开关闭效果的方法.分享给大家供大家参考.具体分析如下: 最近学javascript接触到js对css属性操作,就写了个展开关闭效果,同时实现了按钮文字切换,很简洁啊!这段Js对象操作css属性实现div层的展开关闭效果.将代码分享给JS前端设计者. <title>js操作div展开关闭</title> <style> #jb51 { border: solid 1px #EEE; background:#F7F7F7; ma

js操作css属性实现div层展开关闭效果的方法

  本文实例讲述了js操作css属性实现div层展开关闭效果的方法.分享给大家供大家参考.具体分析如下: 最近学javascript接触到js对css属性操作,就写了个展开关闭效果,同时实现了按钮文字切换,很简洁啊!这段Js对象操作css属性实现div层的展开关闭效果.将代码分享给JS前端设计者. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <title>js操作div展开关闭</ti

js右下角弹出窗口,点击可关闭效果_广告代码

测试按钮 您有新的消息X

原生js和jquery实现图片轮播淡入淡出效果

  原生js和jquery实现图片轮播淡入淡出效果          本文给大家分享的是使用原生的js和jQuery2种方法,分别实现图片轮播的淡入淡出效果的代码,非常实用,也方便小伙伴们对比分析,希望对大家学习js和jq能够有所帮助. 图片轮播有很多种方式,这里采用其中的 淡入淡出形式 js原生和jQuery都可以实现,jquery因为封装了很多用法,所以用起来就简单许多,转换成js使用,其实也就是用js原生模拟出这些用法. 但不管怎样,构造一个最基本的表现层是必须的 简单的图片轮播一般由几个

JS实现输入框提示文字点击时消失效果_javascript技巧

本文实例讲述了JS实现输入框提示文字点击时消失效果.分享给大家供大家参考,具体如下: 在网页登陆框里的输入框里常常会看到提示你输入什么内容的字样颜色比较淡的,这个就是"文本框点击时文字消失,失去焦点时文字出现"这个效果:这个效果用个JS就可以完成,这个效果是做网站的人必备的JS代码:自己会写JS的写写也快,不会写的就需要代码收集以作备用,用到的时候就方便多了. 下面就是这个效果实现用到的JS代码: <script language="JavaScript" t

原生JS实现仿淘宝网左侧商品分类菜单效果代码_javascript技巧

本文实例讲述了原生JS实现仿淘宝网左侧商品分类菜单效果代码.分享给大家供大家参考.具体如下: 这是一款原生JS实现的仿淘宝网左侧商品分类菜单效果代码,JavaScript技术实现,兼容各主流浏览器.自己再修改一下CSS菜单,它会变得更漂亮. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-f-taobao-pro-menu-style-codes/ 具体代码如下: <!DOCTYPE html> <head> <titl

JS实现鼠标滑过折叠与展开菜单效果代码_javascript技巧

本文实例讲述了JS实现鼠标滑过折叠与展开菜单效果代码.分享给大家供大家参考.具体如下: 这是一款展开菜单特效,鼠标移上的时候自动展开,移走后自动折叠隐藏起来,运用了JS技术,并结合了CSS共同实现的效果.本折叠菜单类似QQ可折叠的好友列表一样,不少人喜欢这种菜单. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-hover-show-hidden-menu-style-codes/ 具体代码如下: <!DOCTYPE HTML PUBLIC

原生js和jquery实现图片轮播淡入淡出效果_jquery

图片轮播有很多种方式,这里采用其中的 淡入淡出形式 js原生和jQuery都可以实现,jquery因为封装了很多用法,所以用起来就简单许多,转换成js使用,其实也就是用js原生模拟出这些用法. 但不管怎样,构造一个最基本的表现层是必须的 简单的图片轮播一般由几个部分构成. 对于淡入淡出式 1.首先是个外围部分(其实也就是最外边的整体wrapper) 2.接着就是你设置图片轮播的地方(也就是一个banner吧) 3.然后是一个图片组(可以用新的div 也可以直接使用 ul-->li形式) 4.然后

原生js仿jq判断当前浏览器是否为ie,精确到ie6~8_javascript技巧

熟悉jq的朋友可能会偶尔用到判定当前浏览器是否为ie,甚至是具体到ie哪个版本.比如说判定当前浏览器是ie7 ,写法如下: if($.browser.msie && $.browser.version==7){ //ie7下执行该区域代码 } 原生js,仿jq写法,具体实现代码: <script> var browser = (function(){ var isIE6 = /msie 6/i.test(navigator.userAgent); var isIE7 = /ms