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实现的元素拖动函数宿主为浏览器
Jul 21 Javascript
JQuery实现动态表格点击按钮表格增加一行
Aug 24 Javascript
BootStrap扔进Django里的方法详解
May 13 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
JavaScript排序算法动画演示效果的实现方法
Oct 18 Javascript
微信小程序实战之运维小项目
Jan 17 Javascript
js获取ip和地区
Mar 10 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
Mar 10 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 Javascript
详解webpack4升级指南以及从webpack3.x迁移
Jun 12 Javascript
微信小程序中遇到的iOS兼容性问题小结
Nov 14 Javascript
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
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笔试题
2009/08/04 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
js读取cookie方法总结
2014/10/31 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
基于vue.js实现图片轮播效果
2016/12/01 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
关于python3中setup.py小概念解析
2019/08/22 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
python实现与redis交互操作详解
2020/04/21 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
毕业生怎样写好自荐信
2013/11/11 职场文书
质检部职责
2013/12/28 职场文书
中学生家长评语大全
2014/04/16 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
单位实习介绍信
2015/05/05 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技