js

【原创】jQuery1.8.2源码解析之jQuery.data

北城余情 提交于 2020-03-18 02:07:51
数据缓存,jQuery现在支持两种: 1. dom元素,数据存储在jQuery.cache中。 2.普通js对象,数据存储在该对象中。 以下是源代码: 1 var rbrace = /^(?:\{.*\}|\[.*\])$/, 2 rmultiDash = /([A-Z])/g; 3 4 // 首先是对jQuery对象自身的扩展 5 jQuery.extend({ 6 // 即jQuery.cache,负责存储dom元素的缓存数据 7 cache: {}, 8 9 // removeData时,缓存的数据被清除,返回的当时对应的id,以便再利用 10 deletedIds: [], 11 12 // Please use with caution 13 // 将数据存储到jQuery.cache中时,需要唯一id,用它来维护 14 uuid: 0, 15 16 // Unique for each copy of jQuery on the page 17 // Non-digits removed to match rinlinejQuery 18 // 内部key(随即生成),之后会作为key添加到dom的属性集中,而key对应的value则是该dom对应的缓存对象 19 expando: "jQuery" + ( jQuery.fn.jquery + Math.random(

JS 基本数据类型和引用数据类型

佐手、 提交于 2020-03-18 02:03:32
本文章已收录于: /*--> */ /*--> */ 基本类型和引用类型 ECMAScript包含两个不同类型的值:基本类型值和引用类型值。 基本类型值 指的是简单的数据段; 引用类型值 指由多个值构成的对象。当我们把变量赋值给一个变量时,解析器首先要做的就是确认这个值是基本类型值还是引用类型值。 常见的五种基本数据类型是: Undifined、Null、Boolean、Number和String。这五种基本数据类型可以直接操作保存在变量中的 实际值 。 看下面例子: var a = 10; var b = a; b = 20; console.log(a); // 10 var bl = true; var bl1 = bl; bl1 = false; console.log(bl); // true 上面,b获取值是a值的一份拷贝,虽然,两个变量的值是相等,但是两个变量保存两不同的基本数据类型值。b只是保存了a复制的一个副本。所以,当b的值改变时,a的值依然是10; 下面,两个Boolean变量bl和bl1同样是基本数据类型,同样保存两个不同的基本数据据类型值,bl1保存bl复制的一个副本。 下图演示了这种基本数据类型赋值的过程: 下面看一下引用类型数据: JavaScript 引用数据类型是保存在堆内存中的对象,与其它语言不同的是

深入jQuery中的data()

戏子无情 提交于 2020-03-18 02:01:41
引入   data函数在jQuery中看起来很不起眼, 就像沙滩上一颗平凡的沙子, 但仔细一瞅, 却惊讶的发现data是jQuery中无比重要的一环, 甚至jQuery中各种事件都基于此。 data有什么作用?   在我们平时js编码过程中,我们经常会向DOM元素中添加各种自定义属性,这样有一个弊端。   1 假设我们在DOM元素中添加了一个属性,这个属性指向了某个js对象。 dom1.ele = jsObj   2 当这个js对象发挥完作用后,我们已经用不到他了。这时候按理说应该把这个js变量清空,释放内存。大家都知道,如果一个js对象 不存在 任何外在引用的话,解释器会自动将其在内存中删除,这也是javascript相对于c++等手动管理内存的程序的优点。   3 但是这时候问题来了,因为DOM元素引用了这个js对象,尽管这个js对象已经没有存在的意义了,但是解释器是不会把他删除的。如果想要把其删除,我们可能需要将DOM元素的这个属性设置为null。   4 我们编写了这么多的代码,哪里能把 每个js对象是不是被DOM元素引用了都记住啊?   5 而且,假如DOM元素与js对象之间相互循环引用,根本就无法删除! 这就是内存泄漏   6 所以,为了避免这种情况的发生,我们要尽量避免 引用数据 (这里的引用数据可以说是javascript对象) 直接依附在DOM对象上。   7

js 字符串转换为数值

南笙酒味 提交于 2020-03-18 01:16:59
使用parseInt()你可以从字符串中获取数值,该方法接受另一个基数参数,这经常省略,但不应该。当字符串以”0″开头的时候就有可能会出问 题,例如,部分时间进入表单域,在ECMAScript 3中,开头为”0″的字符串被当做8进制处理了,但这已在ECMAScript 5中改变了。为了避免矛盾和意外的结果,总是指定基数参数。 var month="05"; var monthInt=parseInt(month,10);//10代表是以十进制来转换 替换方法如下: +"05"; Number("05"); 这两个结果都是5 以上两种通常都快于parseInt(s),因为parseInt()方法,顾名思意,不是简单地解析与转换。但是,如果你想输入例如“08 hello”,parseInt()将返回数字,而其它以NaN告终。 PS:我的淘宝店铺新开业,经营各种桌游,棋牌,希望大伙儿能来看看!http://201314yes.taobao.com/ 来源: https://www.cnblogs.com/jenney-qiu/archive/2012/02/27/2369848.html

js将图片按比例缩放显示IE6

感情迁移 提交于 2020-03-18 01:16:43
将图片按比例缩放显示在IE6下会失效,原因是在image未加载的的时候去获取Image的高度和宽度是获取不到的,所以可以判断若浏览器是IE6的话就在图片加载以后获取图片的高度和宽度然后再将图片进行比例缩放。具体实现代码如下: //图片按比例缩放 @ImgID图片控件的ID,@iwidth指定的最大宽度,@iheight指定的最大高度 function DrawImage(ImgID, iwidth, iheight) { var image = new Image(); image.src = $("#"+ImgID).attr("src"); if (window.ActiveXObject) { var ua = navigator.userAgent.toLowerCase(); var ie = ua.match(/msie ([\d.]+)/)[1]; //判断是IE6 if (ie == 6.0) { image.onreadystatechange = function() { if (image.readyState == "complete") { ShowImg(image, iwidth, iheight,ImgID); } } } else { ShowImg(image, iwidth, iheight,ImgID); } } } function

thymeleaf简单语法、js的请求

柔情痞子 提交于 2020-03-17 22:47:45
thymeleaf简单语法 参考博客: https://www.cnblogs.com/msi-chen/p/10974009.html 参考博客: https://segmentfault.com/a/1190000017563310#item-1-9 js的请求: https://blog.csdn.net/weixin_33734785/article/details/92405678 <!-- 评论编辑区--> < div class = " ui form " > < div class = " field " > < textarea id = " content " name = " content " placeholder = " 请输入评论信息... " > </ textarea > </ div > < div class = " fields " > < div class = " field m-margin-bottom-small m-mobile-wide " > < button class = " ui teal button m-mobile-wide " id = " submitContent " > < i class = " edit icon " > </ i > 发布 </ button > </ div > </ div > <

IE打开网页加载js问题

…衆ロ難τιáo~ 提交于 2020-03-17 20:47:39
2020年3月13日工作问题 问题:在jsp页面,下有js文件没有加载出来,但是在f12下,刷新就加载出来了。 我打开的网页是360安全浏览器,内核设置为ie8,但是打开网页有一些js文件就是加载不出来,后来查询 得知。在ie8/9模式下,只能打开f12生效console方法。在ie6/7,根本没有这个方法。 解决: 1.直接一点,删除就可以了 2.用代码解决 if(window.console){ //一些console命令 console.info("gogo"); } 这次的问题发生了,及时的解决,才能更好的锻炼自己。 来源: CSDN 作者: 山沉 链接: https://blog.csdn.net/qq_43925043/article/details/104852580

JavaScript 进阶(一)JS的\"多线程\"

二次信任 提交于 2020-03-17 17:39:38
这个系列的文章名为“JavaScript 进阶”,内容涉及JS中容易忽略但是很有用的,偏JS底层的,以及复杂项目中的JS的实践。主要来源于我几年的开发过程中遇到的问题。小弟第一次写博客,写的不好的地方请诸位斧正,觉得还有一些阅读价值的请帮忙分享下。这个“JavaScript 进阶”是一个系列文章,请大家鼓励鼓励,我尽快更新。另外,如果你有比较好的话题,也可以在下面评论,我们一起研究提高。 JS是多线程的吗? 多线程编程相信大家都很熟悉,比如在界面开发中,如果一个事件的响应需要较长时间,那么一般做法就是把事件处理程序写在另外一个线程中,在处理过程中,在界面上面显示类似进度条的元素。这样界面就不会卡住,并且能够显示任务执行进度。记得刚开始做前端的时候,老板交代在界面上面做一个定时器,每秒更新用户的在线时间。当时拥有Java和C++开发经验的我自信满满的说我加一个线程就可以分分钟搞定了。所以查阅文档,发现setTimeout和setInterval可以很方便的实现该功能。那时候我就认为这就是JS中的多线程。setTimeout相当于启动一个线程,等待一段时间后执行函数,setInterval则是在另外的一个线程中,每隔一段时间执行函数。这个观念在我的头脑中存在了一年左右,直到遇到了这样的一个问题。 测试人员发现一个按钮的点击响应时间较长,在响应过程中,界面卡住了

Js_实现3D球体旋转

折月煮酒 提交于 2020-03-17 17:07:15
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <style> .tagBall{ width: 800px; height: 800px; margin:50px auto; position: relative; } .tag{ display: block; position: absolute; left: 0px; top: 0px; color: #000; text-decoration: none; font-size: 15px; font-family: "微软雅黑"; font-weight: bold; } .tag:hover{border:1px solid #666;} </style> <title>3D标签-柯乐义</title> </head> <body> <div class=

js分支语句以及while语句

可紊 提交于 2020-03-17 15:27:24
1,随机数的使用 JavaScript中,生成随机数值的方式与其他语言不同 Math.random() 生成 0 - 1 之间的小数 可以取到 0 , 不会取到1 如果要生成 a - b 范围之间的数值 要取到 a 和 b parseInt( Math.random()*( b+1-a ) + (a) ) 2, if判断和switch (1),应用 if判断使用的范围更广,频率更高 判断范围,判断逻辑表达式,判断嵌套 switch:判断全等于某个数值 (2), if有4种语法形式 if(){} if(){}else{} if()else if(){}else if(){}... if()else if(){}else if(){}...else{} (3), switch有2中语法形式 switch(变量){ case 数值1 : 程序1; break; case 数值2 : 程序3; break; case 数值3 : 程序3; break; ..... default: 程序; break; } switch的穿越语法 switch(变量){ case 数值1 : case 数值2 : case 数值3 : 程序1; break; case 数值4 : case 数值5 : case 数值6 : 程序2; break; ..... default: 程序; break; }