jQuery+PHP打造滑动开关效果


Posted in Javascript onDecember 16, 2014

本文介绍了使用jQuery、PHP和MySQL实现类似360安全卫士防火墙开启关闭的开关,可以将此功能应用在产品功能的开启和关闭功能上。

jQuery+PHP打造滑动开关效果

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

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打造滑动开关效果

.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 '服务器忙,请稍后再试!';   

}

结束语通过本文您可以熟练掌握ajax在WEB开发中的应用,并能快速的应用到您的项目中。将一如既往的为广大开发者提供更具实用性的应用,致力于WEB前端技术的应用。

Javascript 相关文章推荐
Eval and new funciton not the same thing
Dec 27 Javascript
JS获取后台Cookies值的小例子
Mar 04 Javascript
使用javascript控制cookie显示和隐藏背景图
Feb 12 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
May 19 Javascript
JavaScript中具名函数的多种调用方式总结
Nov 08 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
理解javascript封装
Feb 23 Javascript
AngularJS指令用法详解
Nov 02 Javascript
layui 给数据表格加序号的方法
Aug 20 Javascript
Node.js 进程平滑离场剖析小结
Jan 24 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
Feb 28 Javascript
vue-element-admin 菜单标签失效的解决方式
Nov 12 Javascript
javascript进行四舍五入方法汇总
Dec 16 #Javascript
javascript 判断整数方法分享
Dec 16 #Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
Dec 16 #Javascript
jquery队列函数用法实例
Dec 16 #Javascript
JQuery仿小米手机抢购页面倒计时效果
Dec 16 #Javascript
jQuery实现数字加减效果汇总
Dec 16 #Javascript
javascript使用switch case实现动态改变超级链接文字及地址
Dec 16 #Javascript
You might like
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
PHP文件与目录操作示例
2016/12/24 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
JS 文件大小判断的实现代码
2010/04/07 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
Prototype框架详解
2015/11/25 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
python实现简单socket通信的方法
2016/04/19 Python
python 链接和操作 memcache方法
2017/03/04 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
Django框架封装外部函数示例
2019/05/28 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
人力资源经理的岗位职责范本
2014/02/28 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书