jquery+Handler实现淘宝收藏列表导航功能    

我一个朋友,因为jquery不怎么会写,他工作大部分都是用服务器控件,所以他看到这样的效果不好做,叫我帮他做,我答应他了,因为很忙,所以就今晚抽了点时间来做做,在里面最重要的是用到了现在很流行的jquery,他的效果,大家用过淘宝的收藏就知道,就是一个列表,然后鼠标移上去右边就显示【编辑/删除】功能,当点击编辑时对收藏类就行编辑,然后点击保存,整个过程就这样,我在这里分享一下,就是想以后我们园子的朋友有遇到这样的问题,看到这个例子可以有一种豁然开朗的感觉。

 

1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3  <html xmlns="http://www.w3.org/1999/xhtml">
4  <head runat="server">
5     <title>jquery+handler实现的淘宝收藏列表的导航功能---aXinNo1title>
6     <script src="jquery-1.4.2.min.js" type="text/javascript">script>
7     <style type="text/css">
8         .show{list-style: none;margin: 0px;padding: 0px;}        
9         .show li{width: 300px;height: 25px;margin: 0px;border: 1px #ccc solid;}        
10         .show li a{float: left;padding-left: 5px;padding-top: 5px;}        
11         .show li span{display: none;float: left;margin-left: 110px;}
12         .show li dl{display: none;float: left;border: 1px red solid;margin: 0px;padding: 0px;}
13     style>
14 head>
15 <body>
16     <form id="form1" runat="server">
17     <div><ul class="show">
18             <%for (int i = 0; i < list.Count; i++)
19                 {
20                     UserModel uModel = list[i] as UserModel;%>
21             <li><a href="#">
22                 <%=uModel.cname %>a>
23                 <dl><dd><table style="width: 100%; margin: 0px; padding: 0px;">
24                             <tr>
25                                 <td style="text-align: left;">
26                                     <input type="text" id='uname' value='' />
27                                 td>
28                                 <td style="text-align: right">
29                                     <a id='save' href="javascript:doSave(">保存a>
30                                 td>
31                                 <td style="text-align: right">
32                                     <a id="doDelete" href="javascript:doClose(">取消a>
33                                 td>tr>table>dd>dl>              
34                 <span><a id="edit" href="javascript:doEdit(">编辑a> <a
35                     href="javascript:doDelete(" onclick="javascript:return confirm('你确定删除?');">
36                     删除a> span>li> <%  } %>        
37     ul>div>
38     form>
39 body>
40 <script type="text/javascript">
41     $(document).ready(function(){
42          $('ul li').hover(function(){
43               $(this).find('span').css({"display":"block"});
44          },function(){
45             $(this).find('span').css({"display":"none"});
46          });        
47          $('ul li:even').css({"background-color":"#ccc"});
48     });
49     function doEdit(id){
50         $('#edit'+id).parents('span').css({"display":"none"});
51         $('#edit'+id).parents('span').siblings('a').css({"display":"none"});
52         $('#edit'+id).parents('span').siblings('dl').css({"display":"block"});
53         if($('#edit'+id).parents('span').siblings('dl').css("display")=="block"){
54             $('#edit'+id).parents('span').parent().hover(function(){
55                  $('#edit'+id).parents('span').css({"display":"none"});
56             });
57         }
58     }    
59     function doClose(id){
60         $('#doDelete'+id).parent().parent().parent().
61         parent().parents('dl').css({"display":"none"});
62         $('#doDelete'+id).parent().parent().parent()
63         .parent().parents('dl').siblings('a').css({"display":"block"});
64         $('#doDelete'+id).parent().parent().parent()
65         .parent().parents('dl').siblings("span").css({"display":"none"});
66          $('ul li').hover(function(){
67               $(this).find('span').css({"display":"block"});
68          },function(){
69             $(this).find('span').css({"display":"none"});
70          });
71     }    
72     function doDelete(id){  
73         $.ajax({
74             type:'post',
75             data:{cmd:"delete",id:id},
76             url:"Handler.ashx",
77             success:function(result){
78                window.location.reload();
79             }
80         });
81     }    
82     function doSave(id){    
83         var data={cname:document.getElementById("uname"+id).value,cmd:"save",id:id};
84         $.ajax({
85             type:'post',
86             data:data,
87             url:"Handler.ashx",
88             success:function(result){
89                 window.location.reload();
90             }
91         });
92     }
93 script>
94 html>
95

 

Handler处理文件


using System;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;

public class Handler : IHttpHandler
{
   
    protected HttpContext ctx;
    public void ProcessRequest(HttpContext context)
    {
        ctx = context;
        ctx.Response.ContentType = "text/plain; charset=UTF-8";
        if (ctx.Request["cmd"].Equals("save"))
        {
            this.dosave();   //其实是修改的
        }
        else if (ctx.Request["cmd"].Equals("delete"))
        {
            this.dodelete();//删除
        }


    }

    protected void dosave()
    {
        UserInfoBll uBll = new UserInfoBll();
        string id = ctx.Request["id"].ToString();
        string cname = ctx.Request["cname"].ToString();
        string result = "";
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        UserModel uModel = new UserModel
        {
            cname = cname,
            ID = Convert.ToInt32(id)
        };
        try {
            uBll.Update(uModel);
            result = "操作成功";
        }
        catch { result = "操作失败"; }
        string strJson = serializer.Serialize(result);
        ctx.Response.Write(strJson);
    }

    protected void dodelete() {
        UserInfoBll uBll = new UserInfoBll();
        string id = ctx.Request["id"].ToString();
        bool flag= uBll.Delete(Convert.ToInt32(id));
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        string strJson = serializer.Serialize(flag);
        ctx.Response.Write(strJson);
    }
    
    

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}