DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> jQuery入門知識 >> JQuery特效代碼 >> JQquery的一些使用心得分享
JQquery的一些使用心得分享
編輯:JQuery特效代碼     
我昨天的成果--常駐右下角的消息提示
. 代碼如下:
var msgClass = function(){
this.init = function(){
var msgDiv = "<div id = \"msg_show\" style=\"position: fixed; bottom: 0px; right: 0px; _position: absolute; display: none;\">" +
"<a id = \"msg_show_a\" href=\"javascript:void(0);\">" +
"<div style=\"float: left; width: 200px; height: 30px; font-size: 12px; color: #f00; line-height: 30px; text-align: left; position: relative; border: 1px #ccc solid; background-color: #eff;\">" +
"<img src=\"/common/images/xx.gif\" width=\"11\" height=\"11\" style=\"float: left; margin: 9px; display: inline;\" />" +
"您有新的消息,請注意查收!" +
"</div>" +
" </a>" +
"</div>" +
"<div id=\"msg_block\" style=\"position: fixed; bottom: 30px; right: 0px; _position: absolute; display: none;\">" +
"<div style=\"float: left; width: 200px; height: 140px; position: relative; border: 1px #ccc solid; background-color: #eff; overflow-x:hidden; overflow-y:scroll\">" +
"<ul class=\"xxx\" id=\"msg_content\">" +
"</ul>" +
"</div>" +
"</div>";
$("body", window.parent.document).append(msgDiv)
$("#msg_show_a", window.parent.document).click(function(){msg_click()});
}
var msg_click = function(){
var msgDiv = window.parent.document.getElementById("msg_block");
if ("none" == msgDiv.style.display) {
msgDiv.style.display = "block";
} else {
msgDiv.style.display = "none";
}
}
this.getMessage = function() {
$.ajax( {
tyep : "POST",
url : "/msg/getPromptMsgInfo.action",
success : function(msg) {
var json = eval(msg);
var num = json.length;
if (num != 0) {
$("#msg_show",window.parent.document).css("display", "");
$("#msg_content", window.parent.document).empty();
for ( var i = 0; i < num; i++) {
var title = json[i].TITLE.substr(0, 12);
var sub = "<li title=\""
+ json[i].TITLE
+ "\"><a id =\"a_"+i+"\" href=\"javascript:void(0)\" >"
+ title
+ "</a></li>";
var MSG_ID=json[i].MSG_ID;
var RELATION_ID=json[i].RELATION_ID;
$("#msg_content", window.parent.document).append(sub);
$("#a_"+i, window.parent.document).click("{'MSGID':'"+MSG_ID+"','RELATIONID':'"+RELATION_ID+"'}",
function(e){
msgSelected(e.data);
});
}
}else{
$("#msg_show", window.parent.document).css("display", "none");
}
}
});
}
var msgSelected = function(data) {
var href = "";
var json;
eval("json="+data);
var msgId = json.MSGID;
var relationId = json.RELATIONID;
/*start----write your logic*/
if (1 == relationId) {
href = "/usercenter/showWaitDiagnose.action?isOnClick=3";
}
//........
/*end----*/
$.ajax( {
type : "post",
url : "/msg/updateMsgStatue.action",
data : "msgId=" + msgId,
success : function() {
parent.window.location.href = href;
}
});
}
}
function getMsg(){
new msgClass().getMessage();
}
$(document).ready(function(){
var msg = new msgClass();
msg.init();
msg.getMessage();
setInterval("getMsg()", 3000);
});

好吧,首先我得承認,我原以為我對jQuery的使用還過得去,可是經過昨天的工作,我才發現,原來,我才算是剛剛入門。好吧。下面,我簡單講一下,我昨天遇到的問題以及解決方案。
  1.從iframe中獲取父窗口中的元素
    例如:獲取父窗口中的body,以便可以動態的插入一些元素: $("body", window.parent.document)
       獲取父窗口中主鍵為 identity 的元素 : $("#identity", window.parent.document)
    總結:$(selector, 你想要獲取的窗口的document對象),以上!
  2.動態添加元素事件
    好吧。我先給出兩種寫法,你來想想那個是正確的。假設有一個JS方法: function fun(){....} 有html:<div id = "div1"></div> 為這個div添加一個onclick事件
    2.1 $("#div1").click(fun());
    2.2 $("#div1").click(function(){fun()});
    好啦,到底是2.1對還是2.2呢?
    想到了沒有?正確的答案應該是2.2.不信的可以試一試。如果用2.1的方法,效果跟運行fun()這個方法是一樣的。
  3.傳參數的問題
    講到了方法,就要講一下參數的問題。假設我們有方法 function fun(a, b){....} 現在我在另一個方法裡面調用2.2方法為div添加一個事件。
    例如:
. 代碼如下:
    function fun1(){
      for(var i = 0; i < NUM; i++){
          var a = i;
          var b = i+1;
        $("#div1").click(function(){
          fun(a,b);
        });
      }
    }

    類似上面的例子,出現的問題就是:在fun方法中獲取到的a和b的值跟你實際不一樣。解決方法就是調用click的另一個方法。
    $("#div1").click(msg,function(e){fun(e.data)};
    其中msg是一個string類型的值.最簡單的辦法是把要傳送的參數寫成一個json形式。
    這裡的e你可能會以為是你要傳送的數據。其實不然,這裡的e是把一個click事件的對象,裡面包含了我們要傳送的數據。你可以通過firebug的debug功能看到它到底包含了什麼。
    可能你對e.data更加好奇.其實e.data就是我們要傳送的數據msg。你可以通過firebug看到。
    最後在fun函數中 調用:
. 代碼如下:
    function fun(data)
    {
      var json;
      eval("json="+data);
      .....
    }

這樣就可以操作json對象了,接下來的事情,自己做吧!
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved