使用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 相关文章推荐
input的focus方法使用
Mar 13 Javascript
JS弹出层单纯的绝对定位居中示例代码
Feb 18 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
May 12 Javascript
JS中多种方式创建对象详解
Mar 22 Javascript
Angular.js如何从PHP读取后台数据
Mar 24 Javascript
分享一个精简的vue.js 图片lazyload插件实例
Mar 13 Javascript
微信小程序 空白页重定向解决办法
Jun 27 Javascript
Vue.js添加组件操作示例
Jun 13 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
新手必须知的Node.js 4个JavaScript基本概念
Sep 16 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 Javascript
JS代码实现页面切换效果
Jan 10 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
smarty基础之拼接字符串的详解
2013/06/18 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
原生js 秒表实现代码
2012/07/24 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
Python subprocess模块学习总结
2014/03/13 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
Python日志syslog使用原理详解
2020/02/18 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
党员批评与自我批评
2014/02/12 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
小学课外活动总结
2014/07/09 职场文书
党的生日演讲稿
2014/09/10 职场文书
个人合作协议范本
2015/08/06 职场文书
高中美术教学反思
2016/02/17 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL