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 相关文章推荐
javascript 支持链式调用的异步调用框架Async.Operation
Aug 04 Javascript
Jquery中对数组的操作代码
Aug 12 Javascript
Table冻结表头示例代码
Aug 20 Javascript
将页面table内容与样式另存成excel文件的方法
Aug 05 Javascript
javascript使用输出语句实现网页特效代码
Aug 06 Javascript
js中 计算两个日期间的工作日的简单实例
Aug 08 Javascript
node.js路径处理方法以及绝对路径详解
Mar 04 Javascript
微信公众号支付H5调用支付解析
Nov 04 Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
详解VUE 数组更新
Dec 16 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 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中获取文件扩展名的N种方法小结
2012/02/27 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
phpize的深入理解
2013/06/03 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
python如何在列表、字典中筛选数据
2018/03/19 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
校园安全广播稿
2014/02/08 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
奖励申请报告范文
2015/05/15 职场文书
政协常委会议主持词
2015/07/03 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
入门学习Go的基本语法
2021/07/07 Golang
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS
Pygame Draw绘图函数的具体使用
2021/11/17 Python
Linux磁盘管理方法介绍
2022/06/01 Servers