簡述: javascript
實現一個頭像懸浮框 html
以jquery插件形式實現, 同時使用cookie json作緩存 java
,減小短時間內hover時間連續觸發,致使服務器過多請求 jquery
代碼: web
- /**
- * 鼠標移動到頭像後,出現彈出框
- * @param obj
- */
- function avatarOnMouseOver(obj, userId, imageUrl){
- var avatarPopWindow = $("#iuyt").removeClass("hide");
- $(obj).append(avatarPopWindow);
- callAvatarData(avatarPopWindow, userId, imageUrl);
- };
-
-
- /**
- * 向後臺請求人員頭像的數據
- */
- function callAvatarData(popWin, userId, imageUrl){
- // 先從cookie中尋找,若是有的話,就再也不向後臺去要
- var userInfoStr = $.cookie(userId);
- if(userInfoStr != null){
- var userInfo = JSON.parse(userInfoStr);
- setUserInfoToPopWindow(popWin, userInfo)
- }else{
- $.ajax({
- type: "post",
- url: '/webproj/staff/getUserInfo',
- dataType:"json",
- data: {
- userId: userId
- },
- success: function(userInfo){
- setUserInfoToPopWindow(popWin, userInfo)
- var dateNow = new Date();
- var dateExpired = new Date();
- dateExpired.setTime(dateNow.getTime() + (60 * 1000));
- $.cookie(userId, JSON.stringify(userInfo), {expires: dateExpired})
- }
- });
- }
- }
-
-
- function setUserInfoToPopWindow(popWin,userInfo){
- // 獲得的數據填充人員名片
- $(popWin).find("#avatarName").text(userInfo.name);
- $(popWin).find("#avatarIconUrl").attr('src', userInfo.iconUrl);
- $(popWin).find("#avatarOrganizationName").text(userInfo.organizationName);
- $(popWin).find("#avatarPhone").text("電話:" + userInfo.phone);
- $(popWin).find("#avatarMobile").text("手機:" + userInfo.mobile);
- $(popWin).find("#avatarEmail").text("郵箱:" + userInfo.email);
- $(popWin).find("#avatarCompanyName").text(userInfo.companyName);
- }
-
-
- /**
- * 鼠標移開後,隱藏彈出框
- * @param obj
- */
- function avatarOnMouseOut(obj){
- $("#iuyt").addClass("hide");
- }
-
-
-
- /**
- * 頭像懸浮框插件
- */
- (function($){
- $.fn.avatar_hover = function(options){
- options = $.extend({
-
- }, options);
-
- return this.each(function(){
- var userId = $(this).attr("data_userId");
- var iconUrl = $(this).attr("data_iconUrl");
- $(this).mouseover(function(){
- avatarOnMouseOver(this, userId, iconUrl);
- })
- $(this).mouseout(function(){
- avatarOnMouseOut(this, userId, iconUrl);
- })
- });
- };
- })(jQuery)
頁面上按照本身的需求 定義了兩個標籤
- <div id="avatar_img" class="z haoyu" data_userId="${topicInfo.topicUserVo.userId }"
- data_iconUrl="${topicInfo.topicUserVo.iconUrl}" >
- <a href="#"><img class="gb_v42" src="${topicInfo.topicUserVo.iconUrl }"></a>
- </div>
頭像佈局, 函數中利用avatar_img這個id全局初始化 ajax
- <script src="${rc.contextPath}/common/static/lib/avatar_hover/js/avatar_hover_window.js" type="text/javascript"></script>
- <#-- 話題頭像懸浮框 庫 END -->
-
- <div class="b-card hide" id="iuyt">
- <div class="bc-bgimg">
- <div class="bc-icon"><img id="avatarIconUrl" class="gb_v72" src="" /></div>
- <div class="bc-name" id="avatarName"></div>
- <div class="bc-post" id="avatarOrganizationName"></div>
- <div class="bc-oname" id="avatarCompanyName"></div>
- <ul class="bc-more">
- <li id="">手機:保密</li>
- <li id="avatarPhone">電話:</li>
- <li id="avatarEmail">郵箱:</li>
- </ul>
- </div>
- </div><!--limia-->
-
- <script type="text/javascript" >
- $(function(){
- $("#avatar_img").avatar_hover({
-
- });
- })
- </script>
簡述: json
用cookie 緩存數據 緩存
代碼: 服務器
若是cookie須要存儲對象,那麼就須要轉換爲JSON格式以後存儲 cookie
-- 定義失效時間爲1分鐘
- var dateNow = new Date();
- var dateExpired = new Date();
- dateExpired.setTime(dateNow.getTime() + (60 * 1000));
- $.cookie(userId, JSON.stringify(userInfo), {expires: dateExpired})
以後使用時,則將對象轉換爲object後返回
- // 先從cookie中尋找,若是有的話,就再也不向後臺去要
- var userInfoStr = $.cookie(userId);
- if(userInfoStr != null){
- var userInfo = JSON.parse(userInfoStr);
- setUserInfoToPopWindow(popWin, userInfo)
- }
若是要定義天
則使用
- $.cookie("<%=courseKey %>", "已看過教程", {expires: 365});
http://blog.csdn.net/anialy/article/details/28109075