jquery實現懸浮框

簡述: javascript

實現一個頭像懸浮框 html

    以jquery插件形式實現, 同時使用cookie json作緩存 java

    ,減小短時間內hover時間連續觸發,致使服務器過多請求 jquery


代碼: web

[html]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
  1. /**  
  2.  * 鼠標移動到頭像後,出現彈出框  
  3.  * @param obj  
  4.  */  
  5. function avatarOnMouseOver(obj, userId, imageUrl){     
  6.     var avatarPopWindow = $("#iuyt").removeClass("hide");  
  7.     $(obj).append(avatarPopWindow);  
  8.     callAvatarData(avatarPopWindow, userId, imageUrl);  
  9. };  
  10.   
  11.   
  12. /**  
  13.  * 向後臺請求人員頭像的數據  
  14.  */  
  15. function callAvatarData(popWin, userId, imageUrl){  
  16.     // 先從cookie中尋找,若是有的話,就再也不向後臺去要  
  17.     var userInfoStr = $.cookie(userId);  
  18.     if(userInfoStr != null){  
  19.         var userInfo = JSON.parse(userInfoStr);  
  20.         setUserInfoToPopWindow(popWin, userInfo)  
  21.     }else{  
  22.         $.ajax({  
  23.             type: "post",  
  24.             url: '/webproj/staff/getUserInfo',    
  25.             dataType:"json",   
  26.             data: {  
  27.                 userId: userId  
  28.             },   
  29.             success: function(userInfo){    
  30.                 setUserInfoToPopWindow(popWin, userInfo)  
  31.                 var dateNow = new Date();  
  32.                 var dateExpired = new Date();  
  33.                 dateExpired.setTime(dateNow.getTime() + (60 * 1000));  
  34.                 $.cookie(userId, JSON.stringify(userInfo), {expires: dateExpired})  
  35.             }    
  36.         });       
  37.     }  
  38. }  
  39.   
  40.   
  41. function setUserInfoToPopWindow(popWin,userInfo){  
  42.     // 獲得的數據填充人員名片  
  43.     $(popWin).find("#avatarName").text(userInfo.name);  
  44.     $(popWin).find("#avatarIconUrl").attr('src', userInfo.iconUrl);  
  45.     $(popWin).find("#avatarOrganizationName").text(userInfo.organizationName);  
  46.     $(popWin).find("#avatarPhone").text("電話:" + userInfo.phone);  
  47.     $(popWin).find("#avatarMobile").text("手機:" + userInfo.mobile);  
  48.     $(popWin).find("#avatarEmail").text("郵箱:" + userInfo.email);  
  49.     $(popWin).find("#avatarCompanyName").text(userInfo.companyName);  
  50. }  
  51.   
  52.   
  53. /**  
  54.  * 鼠標移開後,隱藏彈出框  
  55.  * @param obj  
  56.  */  
  57. function avatarOnMouseOut(obj){  
  58.     $("#iuyt").addClass("hide");  
  59. }  
  60.   
  61.   
  62.   
  63. /**  
  64.  * 頭像懸浮框插件  
  65.  */  
  66. (function($){  
  67.     $.fn.avatar_hover = function(options){  
  68.         options = $.extend({  
  69.               
  70.         }, options);  
  71.       
  72.         return this.each(function(){  
  73.             var userId = $(this).attr("data_userId");  
  74.             var iconUrl = $(this).attr("data_iconUrl");  
  75.             $(this).mouseover(function(){  
  76.                 avatarOnMouseOver(this, userId, iconUrl);  
  77.             })  
  78.             $(this).mouseout(function(){  
  79.                 avatarOnMouseOut(this, userId, iconUrl);  
  80.             })  
  81.         });  
  82.     };  
  83. })(jQuery)  

頁面上按照本身的需求 定義了兩個標籤
[html]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
  1. <div id="avatar_img" class="z haoyu" data_userId="${topicInfo.topicUserVo.userId }"   
  2.                   data_iconUrl="${topicInfo.topicUserVo.iconUrl}" >  
  3.                    <a href="#"><img class="gb_v42" src="${topicInfo.topicUserVo.iconUrl }"></a>  
  4.                 </div>      


頭像佈局, 函數中利用avatar_img這個id全局初始化 ajax

[html]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
  1. <script src="${rc.contextPath}/common/static/lib/avatar_hover/js/avatar_hover_window.js" type="text/javascript"></script>  
  2. <#-- 話題頭像懸浮框  庫 END -->  
  3.   
  4. <div class="b-card hide"  id="iuyt">  
  5.   <div class="bc-bgimg">  
  6.     <div class="bc-icon"><img id="avatarIconUrl"  class="gb_v72" src="" /></div>  
  7.     <div class="bc-name" id="avatarName"></div>  
  8.     <div class="bc-post" id="avatarOrganizationName"></div>  
  9.     <div class="bc-oname" id="avatarCompanyName"></div>  
  10.     <ul class="bc-more">  
  11.       <li id="">手機:保密</li>  
  12.       <li id="avatarPhone">電話:</li>        
  13.       <li id="avatarEmail">郵箱:</li>  
  14.     </ul>  
  15.   </div>  
  16. </div><!--limia-->  
  17.   
  18. <script type="text/javascript" >  
  19. $(function(){  
  20.     $("#avatar_img").avatar_hover({  
  21.       
  22.     });  
  23. })  
  24. </script>  


簡述: json

用cookie 緩存數據 緩存


代碼: 服務器

若是cookie須要存儲對象,那麼就須要轉換爲JSON格式以後存儲 cookie

    --  定義失效時間爲1分鐘

[javascript]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
  1. var dateNow = new Date();  
  2. var dateExpired = new Date();  
  3. dateExpired.setTime(dateNow.getTime() + (60 * 1000));  
  4. $.cookie(userId, JSON.stringify(userInfo), {expires: dateExpired})  


以後使用時,則將對象轉換爲object後返回

[javascript]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
  1. // 先從cookie中尋找,若是有的話,就再也不向後臺去要  
  2. var userInfoStr = $.cookie(userId);  
  3. if(userInfoStr != null){  
  4.     var userInfo = JSON.parse(userInfoStr);  
  5.     setUserInfoToPopWindow(popWin, userInfo)  
  6. }  


若是要定義天

則使用

[javascript]  view plain copy 在CODE上查看代碼片 派生到個人代碼片
  1. $.cookie("<%=courseKey %>""已看過教程", {expires: 365});  
http://blog.csdn.net/anialy/article/details/28109075
相關文章
相關標籤/搜索