巧妙利用jQuery和PHP打造类似360安全卫士防火墙功能开关(类似iphone界面)效果

本文介绍了使用jQueryPHPMySQL实现类似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,我们只需用一张图片来标识开关按钮。

.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 h 3 { 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请求,提交的参数是对应功能的idtype,用于后台区分请求的是哪个功能和请求的类型(开启和关闭)。其实,大家稍微留神,可以看出,根据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 '服务器忙,请稍后再试!' ;   
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值