使用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 相关文章推荐
js 多种变量定义(对象直接量,数组直接量和函数直接量)
May 24 Javascript
js中设置元素class的三种方法小结
Aug 28 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
May 20 Javascript
angular route中使用resolve在uglify压缩后问题解决
Sep 21 Javascript
jQuery实现CheckBox全选、全不选功能
Jan 11 Javascript
微信小程序 动态传参实例详解
Apr 27 Javascript
详解Javascript获取缓存和清除缓存API
May 25 Javascript
javascript ES6 新增了let命令使用介绍
Jul 07 Javascript
webpack热模块替换(HMR)/热更新的方法
Apr 05 Javascript
微信小程序dom操作的替代思路实例分析
Dec 06 Javascript
jQuery实现增删改查
Dec 22 jQuery
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
对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
使用symfony命令创建项目的方法
2016/03/17 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
PHP面向对象程序设计重载(overloading)操作详解
2019/06/13 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
Python对列表排序的方法实例分析
2015/05/16 Python
Python实现的彩票机选器实例
2015/06/17 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
python url 参数修改方法
2018/12/26 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
python+os根据文件名自动生成文本
2019/03/21 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
幼儿园教研活动方案
2014/01/19 职场文书
家长学校实施方案
2014/03/15 职场文书
小学综合实践活动总结
2014/07/07 职场文书
励志演讲稿600字
2014/08/21 职场文书
毕业证委托书范文
2014/09/26 职场文书
2014年民警工作总结
2014/11/25 职场文书