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 高亮显示文本中重要的关键字
Dec 24 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
Jun 07 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
May 10 Javascript
jquery插件开发之实现md5插件
Mar 17 Javascript
BootStrap按钮标签及基本样式
Nov 23 Javascript
Javascript Function.prototype.bind详细分析
Dec 29 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
用jquery的attr方法实现图片切换效果
Feb 05 Javascript
jquery实现的table排序功能示例
Mar 10 Javascript
Vue实现页面添加水印功能
Nov 09 Javascript
VUE-ElementUI 自定义Loading图操作
Nov 11 Javascript
vue keep-alive的简单总结
Jan 25 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
星际争霸任务指南——人族
2020/03/04 星际争霸
How do I change MySQL timezone?
2008/03/26 PHP
PHP通用检测函数集合
2011/02/08 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
网页上facebook分享功能具体实现
2014/01/26 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
php数据访问之增删改查操作
2016/05/09 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
jQuery Collapse1.1.0折叠插件简单使用
2017/08/28 jQuery
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
python运行其他程序的实现方法
2017/07/14 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
Python实现12306火车票抢票系统
2019/07/04 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
python文件操作的简单方法总结
2019/11/07 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
python脚本和网页有何区别
2020/07/02 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
软件测试面试题
2015/10/21 面试题
感情真挚的毕业生求职信
2014/07/19 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python