使用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 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 Javascript
使用javascript实现雪花飘落的效果
Jan 13 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
简单实现js鼠标跟随效果
Aug 02 Javascript
JavaScript框架Angular和React深度对比
Nov 20 Javascript
JS实现的文字间歇循环滚动效果完整示例
Feb 13 Javascript
layui表格checkbox选择全选样式及功能的实例
Mar 07 Javascript
JS实现遍历不规则多维数组的方法
Mar 21 Javascript
react实现换肤功能的示例代码
Aug 14 Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 Javascript
jquery向后台提交数组的代码分析
Feb 20 jQuery
JavaScript 实现拖拽效果组件功能(兼容移动端)
Nov 11 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
我常用的几个类
2006/10/09 PHP
简单的页面缓冲技术
2006/10/09 PHP
PR值查询 | PageRank 查询
2006/12/20 PHP
解析javascript 浏览器关闭事件
2013/07/08 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
python字符串替换的2种方法
2014/11/30 Python
Python Matplotlib库入门指南
2015/05/18 Python
详解python开发环境搭建
2016/12/16 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
平面设计岗位职责
2013/12/14 职场文书
物业总经理岗位职责
2014/02/28 职场文书
市场营销毕业求职信
2014/08/07 职场文书
幼师中班个人总结
2015/02/12 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
开除通知书范本
2015/04/25 职场文书
健康证明
2015/06/19 职场文书