使用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 URL参数判断,确定菜单样式
May 31 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
Jul 11 Javascript
JS 删除字符串最后一个字符的实现代码
Feb 20 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
Apr 02 Javascript
jQuery中的基本选择器用法学习教程
Apr 14 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
Jul 20 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
js数组常用最重要的方法
Feb 04 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
Apr 28 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
Aug 22 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 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
初学JavaScript第二章
2008/09/30 Javascript
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
使用Python写CUDA程序的方法
2017/03/27 Python
python颜色随机生成器的实例代码
2020/01/10 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
财务助理岗位职责
2013/11/10 职场文书
优秀经理事迹材料
2014/02/01 职场文书
生活小常识广播稿
2014/09/16 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
陪护人员误工证明
2015/06/24 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
对象析构函数__del__在Python中何时使用
2022/03/22 Python