JQquery的一些使用心得分享


Posted in Javascript onAugust 01, 2012

我昨天的成果--常驻右下角的消息提示

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对象了,接下来的事情,自己做吧!
Javascript 相关文章推荐
ie 处理 gif动画 的onload 事件的一个 bug
Apr 12 Javascript
Javascript JSQL,SQL无处不在,
May 05 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
Jan 28 Javascript
JS读写CSS样式的方法汇总
Aug 16 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
浅谈js中function的参数默认值
Feb 20 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
对vue.js中this.$emit的深入理解
Feb 23 Javascript
vue使用xe-utils函数库的具体方法
Mar 06 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
Apr 08 Javascript
javascript 兼容所有浏览器的DOM扩展功能
Aug 01 #Javascript
别了 JavaScript中的isXX系列
Aug 01 #Javascript
JS判断元素为数字的奇异写法分享
Aug 01 #Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
Aug 01 #Javascript
jQuery源码中的chunker 正则过滤符分析
Jul 31 #Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
Jul 31 #Javascript
基于jquery的点击链接插入链接内容的代码
Jul 31 #Javascript
You might like
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
JS字符串截取函数实例
2013/12/27 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
python实现梯度下降法
2020/03/24 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
武汉东之林科技有限公司机试
2013/09/17 面试题
linux面试题参考答案(5)
2016/11/05 面试题
公务员培训心得体会
2013/12/28 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
通信工程专业求职信
2014/06/04 职场文书
国庆节主题班会
2015/08/15 职场文书
护理工作心得体会
2016/01/22 职场文书
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers