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 相关文章推荐
jquery文本框中的事件应用以输入邮箱为例
May 06 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
深入理解JavaScript中Ajax
Aug 02 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
Oct 28 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
Mar 08 Javascript
webpack2.0配置postcss-loader的方法
Aug 17 Javascript
原生JS实现多个小球碰撞反弹效果示例
Jan 31 Javascript
webpack4.0 入门实践教程
Oct 08 Javascript
从vue源码看props的用法
Jan 09 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
May 16 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
Oct 24 Javascript
vue el-tree 默认展开第一个节点的实现代码
May 15 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
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
简单的php购物车代码
2020/06/05 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
python利用不到一百行代码实现一个小siri
2017/03/02 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
python requests 测试代理ip是否生效
2018/07/25 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
Python3最长回文子串算法示例
2019/03/04 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
医护人员英文求职信范文
2013/11/26 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
《凡卡》教学反思
2014/04/09 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
学校运动会广播稿
2014/10/11 职场文书
史上最牛的辞职信
2015/02/28 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
nginx七层负载均衡配置详解
2022/07/15 Servers