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 相关文章推荐
js同时按下两个方向键
Dec 01 Javascript
javascript EXCEL 操作类代码
Jul 30 Javascript
script标签属性type与language使用选择
Dec 02 Javascript
jquery实现点击文字可编辑并修改保存至数据库
Apr 15 Javascript
javascript实现跨域的方法汇总
Jun 25 Javascript
JQuery validate插件Remote用法大全
May 15 Javascript
AngularJS基础 ng-repeat 指令简单示例
Aug 03 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
js实现登录与注册界面
Nov 01 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
浅谈微信小程序列表埋点曝光指南
Oct 15 Javascript
Vue中多元素过渡特效的解决方案
Feb 05 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连接MYSQL成功与否的代码
2013/08/16 PHP
php实现mysql封装类示例
2014/05/07 PHP
php中explode函数用法分析
2014/11/15 PHP
PHP多线程类及用法实例
2014/12/03 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP实现文件上传与下载
2020/08/28 PHP
学习jquery之一
2007/04/27 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
微信小程序实现搜索历史功能
2020/03/26 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
Python如何发送与接收大型数组
2020/08/07 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
九年级化学教学反思
2016/02/22 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
python实现求纯色彩图像的边框
2021/04/08 Python
Go 语言中 20 个占位符的整理
2021/10/16 Golang