使用jQuery和PHP实现类似360功能开关效果


Posted in Javascript onFebruary 12, 2014

使用jQuery和PHP实现类似360功能开关效果

准备工作为了更好的演示本例,我们需要一个数据表,记录需要的功能说明及开启状态,表结构如下:

CREATE TABLE `pro` (  
  `id` int(11) NOT NULL auto_increment,  
  `title` varchar(50) NOT NULL,  
  `description` varchar(200) NOT NULL,  
  `status` tinyint(1) NOT NULL default '0',  
  PRIMARY KEY  (`id`)  
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

你可以向表中pro插入几条数据。

index.php

我们要在页面显示相关功能列表,使用PHP读取数据表,并以列表的形式展示。

<?php   
   require_once('connect.php'); //连接数据库   
   $query=mysql_query("select * from pro order by id asc");   
   while ($row=mysql_fetch_array($query)) {   
   ?>   
   <div class="list">   
     <div class="fun_title">   
        <span rel="<?php echo $row['id'];?>" <?php if($row['status']==1){ ?>   
class="ad_on" title="点击关闭"<?php }else{?>class="ad_off" title="点击开启"<?php }?>></span>   
        <h3><?php echo $row['title']; ?></h3>   
     </div>   
     <p><?php echo $row['description'];?></p>   
   </div>   
 <?php } ?>

连接数据库,然后循环输出产品功能列表。

CSS

为了渲染一个比较好的页面外观,我们使用CSS来美化页面,使得页面更符合人性化。使用CSS,我们只需用一张图片来标识开关按钮。

使用jQuery和PHP实现类似360功能开关效果

.list{padding:6px 4px; border-bottom:1px dotted #d3d3d3; position:relative}   
.fun_title{height:28px; line-height:28px}   
.fun_title span{width:82px; height:25px; background:url(switch.gif) no-repeat;    
cursor:pointer; position:absolute; right:6px; top:16px}   
.fun_title span.ad_on{background-position:0 -2px}   
.fun_title span.ad_off{background-position:0 -38px}   
.fun_title h3{font-size:14px; font-family:'microsoft yahei';}   
.list p{line-height:20px}   
.list p span{color:#f60}   
.cur_select{background:#ffc}

CSS代码,我不想详述,提示下我们使用了一张图片,然后通过background-position来定位图片的位置,这是大多数网站使用的方法,好处咱就不说了。

jQuery

我们通过单击开关按钮,及时请求后台,改变对应的功能开关状态。这个过程是一个典型的Ajax应用。通过点击开关按钮,前端向后台PHP发送post请求,后台接收请求,并查询数据库,并将结果返回给前端,前端jQuery根据后台返回的结果,改变按钮状态。

$(function(){   
    //鼠标滑向换色   
    $(".list").hover(function(){   
        $(this).addClass("cur_select");   
    },function(){   
        $(this).removeClass("cur_select");   
    });       //关闭   
    $(".ad_on").live("click",function(){   
        var add_on = $(this);   
        var status_id = $(this).attr("rel");   
        $.post("action.php",{status:status_id,type:1},function(data){   
            if(data==1){   
                add_on.removeClass("ad_on").addClass("ad_off").attr("title","点击开启");   
            }else{   
                alert(data);   
            }   
        });   
    });   
    //开启   
    $(".ad_off").live("click",function(){   
        var add_off = $(this);   
        var status_id = $(this).attr("rel");   
        $.post("action.php",{status:status_id,type:2},function(data){alert(data);     
            if(data==1){   
                add_off.removeClass("ad_off").addClass("ad_on").attr("title","点击关闭");   
            }else{   
                alert(data);   
            }   
        });   
    });   
});

说明,代码中,首先实现了鼠标滑向功能列表换色的功能(详见demo),然后就是单击开关按钮,向后台action.php发送Ajax请求,提交 的参数是对应功能的id和type,用于后台区分请求的是哪个功能和请求的类型(开启和关闭)。其实,大家稍微留神,可以看出,根据Ajax请求成功返回 结果后,开关按钮动态改变样式,实现改变开关状态的功能。

action.php

后台action.php接收到前端的请求,根据参数执行SQL语句,更新对应功能的状态,成功后将结果返回给前端,请看代码:

require_once('connect.php');   
$id = $_POST['status'];   
$type = $_POST['type'];   
if($type==1){ //关闭   
    $sql = "update pro set status=0 where id=".$id;   
}else{ //开启   
    $sql = "update pro set status=1 where id=".$id;   
}   
$rs = mysql_query($sql);   
if($rs){   
    echo '1';   
}else{   
    echo '服务器忙,请稍后再试!';   
}
Javascript 相关文章推荐
jquery关于图形报表的运用实现代码
Jan 06 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
Apr 07 Javascript
js实现简洁的TAB滑动门效果代码
Sep 06 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
Dec 17 Javascript
Javascript之Date对象详解
Jun 07 Javascript
使用jquery如何获取时间
Oct 13 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
Oct 19 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
详解使用 Node.js 开发简单的脚手架工具
Jun 08 Javascript
Nuxt升级2.0.0时出现的问题(小结)
Oct 08 Javascript
小程序和web画三角形实现解析
Sep 02 Javascript
Vue可自定义tab组件用法实例
Oct 24 Javascript
对Jquery中的ajax再封装,简化操作示例
Feb 12 #Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
Feb 12 #Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
Feb 12 #Javascript
jquery ajax,ashx,json的用法总结
Feb 12 #Javascript
Jquery中ajax方法data参数的用法小结
Feb 12 #Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
Feb 12 #Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 #Javascript
You might like
php中的三元运算符使用说明
2011/07/03 PHP
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
php生成图片验证码
2015/06/09 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
python 调用c语言函数的方法
2017/09/29 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
10个示例带你掌握python中的元组
2020/11/23 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
市场营销专科应届生求职信
2013/11/24 职场文书
面料业务员岗位职责
2013/12/26 职场文书
工商管理专业自荐信
2014/06/03 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
小学重阳节活动总结
2015/03/24 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书