使用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 相关文章推荐
ASP SQL防注入的方法
Dec 25 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
Jun 23 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
May 02 Javascript
jquery操作对象数组元素方法详解
Nov 26 Javascript
JavaScript获取网页表单action属性的方法
Apr 02 Javascript
js clearInterval()方法的定义和用法
Nov 11 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
Jul 22 Javascript
js实现弹窗暗层效果
Jan 16 Javascript
antd Upload 文件上传的示例代码
Dec 14 Javascript
Vue 动态组件与 v-once 指令的实现
Feb 12 Javascript
vue-router为激活的路由设置样式操作
Jul 18 Javascript
vue 如何使用递归组件
Oct 23 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模板页面中分页代码的解析
2009/02/06 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
浅谈JavaScript中的String对象常用方法
2015/02/25 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
webpack入门必知必会
2017/01/16 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
token 机制和实现方式
2020/12/15 Javascript
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
python可以用哪些数据库
2020/06/22 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
高一新生军训感言
2014/03/02 职场文书
聚美优品励志广告词
2014/03/14 职场文书
文明演讲稿范文
2014/05/12 职场文书
委托书怎么写
2014/07/31 职场文书
2015年效能监察工作总结
2015/04/23 职场文书