- 浏览: 109073 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (151)
- 120D02 (5)
- 直升机 (1)
- 我的技术资料收集 (82)
- 的技术资料收集 (4)
- .NET Solution (2)
- ASP.NET (1)
- Linq to sql (1)
- 数据库技术(MS SQL) (2)
- 架构/设计 (1)
- 敏捷/持续集成 (1)
- C#.NET开发 (1)
- Matlab开发 (1)
- WinForm开发 (1)
- 开源技术 (1)
- jQuery (1)
- 我的博文 (4)
- js (2)
- android (2)
- 9. 读书笔记 (1)
- CSS3 (1)
- HTML5 (1)
- JavaScript (5)
- 移动开发 (2)
- 编程心得 (1)
- Linux操作系统 (1)
- (BI)商业智能 (1)
- IOS (1)
- Windows Phone (2)
- C# API (1)
- JQuery系列 (1)
- TFS (1)
- C# (2)
- ExtJs (1)
- .NET (1)
- Nginx (1)
- WCF学习笔记 (1)
- Computer Graphic (1)
- IT产品 (1)
- 工具分享 (1)
- MySelf (1)
- C#专栏 (1)
- 管理 (1)
- 基于Oracle Logminer数据同步 (1)
- 日常 (1)
- 实用工具 (1)
- 网页设计 (1)
- avalon (1)
- flash (1)
- DDD (1)
- 01 技术Android (1)
- WCF (1)
- selenium (1)
最新评论
-
464410531:
三国杀。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ...
实用的职场宝典:不提拔你,就因为你只想把工作做好
原文:http://www.leebrimelow.com/native-methods-jquery/
不太重要的没翻译= =
我们针对常用的jQuery方法以及其等价原生方法的性能做了一些测试(1, 2, 3)。
我知道你在想什么。原生方法明显要比jQuery方法快,因为jQuery方法要处理浏览器兼容以及其他一些事情。是的,我完全赞成。写这篇文章并不是出于反对使用jQuery,但如果你针对的是现代浏览器,那么使用原生方法会使性能有很大的提升。
许多开发者没有意识到大多数他们使用的jQuery方法可以使用原生方法,或者更轻量级的方法来代替。下面是一些代码示例,展示一些常用的jQuery方法,以及其等价原生方法。
译者注:需要注意下面有些原生方法是HTML5引用的,部分浏览器可能不能使用。
选择器
jQuery的核心之一就是能非常方便的取到DOM元素。我们只需输入CSS选择字符串,便可以得到匹配的元素。但在大多数情况下,我们可以用简单的原生代码达到同样的效果。
//----得到页面的所有div---------
/* jQuery */
$("div")
/* 原生 */
document.getElementsByTagName("div")
//----得到所有指定class的元素---------
/* jQuery */
$(".my-class")
/* 原生 */
document.querySelectorAll(".my-class")
/* 更快的原生方法 */
document.getElementsByClassName("my-class")
//----通过CSS选择得到元素----------
/* jQuery */
$(".my-class li:first-child")
/* 原生 */
document.querySelectorAll(".my-class li:first-child")
//----得到指定clsss的第一个元素----
/* jQuery */
$(".my-class").get(0)
/* 原生 */
document.querySelector(".my-class")
译者注:其实这里面是有些问题的,document.querySelectorAll和jQuery选择器还是有区别的,前者返回的是一个NodeList,而后者返回的是一个类数组对象。
DOM操作
jQuery还在DOM操作上频繁使用,例如插入或者删除元素。我们也可以使用原生方法来进行这些操作,你会发现这需要写额外的代码,当然也可以写自己的辅助函数来让使用起来更容易。下面是一些将元素插入到页面中的例子。
//----插入元素----
/* jQuery */
$(document.body).append("<div id='myDiv'><img src='im.gif'/></div>");
/* 蹩脚的原生方法 */
document.body.innerHTML += "<div id='myDiv'><img src='im.gif'/></div>";
/* 更好的原生方法 */
var frag = document.createDocumentFragment();
var myDiv = document.createElement("div");
myDiv.id = "myDiv";
var im = document.createElement("img");
im.src = "im.gif";
myDiv.appendChild(im);
frag.appendChild(myDiv);
document.body.appendChild(frag);
//----前置元素----
// 除了最后一行
document.body.insertBefore(frag, document.body.firstChild);
CSS classes
在jQuery中,我们可以很容易对DOM元素添加、删除、检查它的CSS class。幸运的是,利用原生方法也可以简单的办到。
// 得到DOM元素的引用
var el = document.querySelector(".main-content");
//----添加class------
/* jQuery */
$(el).addClass("someClass");
/* 原生方法 */
el.classList.add("someClass");
//----删除class-----
/* jQuery */
$(el).removeClass("someClass");
/* 原生方法 */
el.classList.remove("someClass");
//----是否是该class---
/* jQuery */
if($(el).hasClass("someClass"))
/* 原生方法 */
if(el.classList.contains("someClass"))
修改CSS属性
总是通过Javascript修改和检索CSS属性,这样会比使用jQuery CSS函数更加简单快速,并且没有任何不必要的代码。
// 得到DOM元素引用
var el = document.querySelector(".main-content");
//----设置CSS属性----
/* jQuery */
$(el).css({
background: "#FF0000",
"box-shadow": "1px 1px 5px 5px red",
width: "100px",
height: "100px",
display: "block"
});
/* 原生 */
el.style.background = "#FF0000";
el.style.width = "100px";
el.style.height = "100px";
el.style.display = "block";
el.style.boxShadow = "1px 1px 5px 5px red";
发表评论
-
Javascript:猜猜弹出的是啥?为啥? - 幸福框架
2013-06-28 13:33 430原帖地址:http://www.cnblogs.com/hap ... -
C#中WindowsForm常见控件的运用 -- - 李晓峰
2013-06-28 13:27 1747原帖地址:http://www.cnblogs.com/liy ... -
海量数据处理利器之Hash——在线邮件地址过滤 - MyDetail
2013-06-27 12:00 654原帖地址:http://www.cnblo ... -
ASP.NET MVC 4 for Visual Studio 2010 下载地址 - 张鸿伟
2013-06-27 11:48 754原帖地址:http://www.cnblogs.com/wei ... -
【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化 - r01cn
2013-06-26 11:00 919原帖地址:http://www.cnblogs.com/r01 ... -
[珠玑之椟]估算的应用与Little定律 - 五岳
2013-06-26 10:54 639原帖地址:http://www.cnblogs.com/wuy ... -
30行,金额转人民币大写的代码 - 史蒂芬.王
2013-06-26 10:42 1028原帖地址:http://www.cnblogs.com/ste ... -
从银行的钱荒看一个公司的团队建设 产品线过多最终导致最赚钱的项目面临破产 - James Li
2013-06-26 10:36 632原帖地址:http://www.cnblogs.com/Jam ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 13:39 535原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 13:33 616原帖地址:http://www.cnblo ... -
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" - 量子计算机
2013-06-25 13:27 869原帖地址:http://www.cnblogs.com/DSh ... -
一步一步将自己的代码转换为观察者模式 - 文酱
2013-06-23 11:36 609原帖地址:http://www.cnblo ... -
iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance) - VicStudio
2013-06-23 11:30 543原帖地址:http://www.cnblogs.com/vic ... -
记录asp.net在IE10下事件丢失排错经过 - Adming
2013-06-23 11:24 712原帖地址:http://www.cnblogs.com/wea ... -
记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客! - 三生石上
2013-06-23 11:18 793原帖地址:http://www.cnblogs.com/san ... -
3、使用Oracle Logminer同步Demo
2013-06-19 10:33 571原帖地址:http://www.cnblogs.com/shi ... -
算法实践——数独的基本解法
2013-06-19 10:27 1450原帖地址:http://www.cnblogs.com/gre ... -
简单实现TCP下的大文件高效传输
2013-06-19 10:21 692原帖地址:http://www.cnblogs.com/sma ... -
avalon - 初步接触
2013-06-18 10:06 784原帖地址:http://www.cnblogs.com/aar ... -
Nginx学习笔记(一) Nginx架构
2013-06-18 09:59 529原帖地址:http://www.cnblogs.com/cod ...
相关推荐
我们针对常用的jQuery方法以及其等价原生方法的性能做了一些测试(1, 2, 3)。 我知道你在想什么。原生方法明显要比jQuery方法快,因为jQuery方法要处理浏览器兼容以及其他一些事情。是的,我完全赞成。写这篇文章并...
这两个函数在内部实现上是等价的,它们接受各种类型的参数,如CSS选择器、HTML字符串、DOM元素或已存在的jQuery对象。 2. CSS选择器引擎:jQuery内部使用Sizzle选择器引擎来解析和匹配CSS选择器,提供高效的DOM遍历...
- **jQuery源码初步分析**:jQuery采用了自执行函数的形式,为`window`对象扩展了两个等价的函数`jQuery()`和`$()`。通过调用`$()`函数,返回的是一个由jQuery封装的伪数组对象,通常称之为jQuery对象。 - **核心...
4. **文档加载完成事件**:`jQuery(callback)`,等价于`$(document).ready()`,用于在文档完全加载后执行回调函数,确保DOM元素可用。 #### 三、jQuery的应用场景 - **网页动态更新**:利用Ajax技术无缝更新页面...
原生JavaScript中没有直接等价的方法,但可以自定义一个`remove()`函数来移除元素。 ```javascript // jQuery移除元素 $('.el').remove(); // 原生JavaScript移除元素 function remove(el) { var toRemove = ...
- **DOM对象到jQuery对象**: 将一个DOM对象转化为jQuery对象,可以通过$()函数来完成,例如: ```javascript var domObj = document.getElementById("test"); var jqObj = $(domObj); // 转换为jQuery对象 ``` ...
- **jQuery(elements):** 接受一组原生 DOM 元素作为参数,返回一个包含这些元素的 jQuery 对象。 - **jQuery(cb):** 如果提供了一个函数 `cb` 作为参数,则会在文档加载完成后执行该函数。 - **jQueryObject ...
内容部分还介绍了JQuery的基本结构,其中使用了`$(document).ready()`函数,它相当于原生JavaScript的`window.onload()`函数。这个函数确保了在DOM树构建完毕后再执行其中的代码,这样可以确保对DOM元素的操作是安全...
`get`函数在JavaScript原生数组和jQuery中都有应用。在原生数组中,`get(index)`与`arr[index]`等价,它返回指定索引处的元素。而在jQuery中,`get(index)`与`eq(index)`类似,但它会返回DOM元素而不是jQuery对象。...
`方法是等价的,但前者是jQuery特有的方法。需要注意的是,jQuery对象不能直接使用DOM对象的方法,如`$("#id").innerHTML`和`$("#id").checked`是错误的写法,应使用`$("#id").html()`和`$("#id").attr("checked")`...
在JavaScript中,我们主要使用`Marquee`函数(虽然在现代浏览器中不推荐使用原生的`<marquee>`标签),`offsetWidth`属性来获取元素宽度,以及`setInterval`和`clearInterval`来控制滚动。 ```javascript var ...
为了弥补这一不足,社区开发了一个名为jQuery.check的插件,它为JavaScript提供了一种类似`switch`的语法糖,尽管它并不完全等同于原生的`switch`。 jQuery.check是基于jQuery库的一个扩展,它的核心思想是提供一个...
在某些情况下,你可以在事件处理函数内部根据条件解绑事件,这时可以使用当前的`jQuery.Event`对象: ```javascript $('a').click(function(event) { if (条件满足) { $('a').unbind(event); } }); ``` 这里`...
这与原生JavaScript中的`document.getElementById("txt1").value`方法是等价的。 ```javascript $("#txt1").val(); ``` 在示例中还提到了如何通过`$(document).ready()`函数来绑定事件处理器,使得在DOM加载完成后...
总之,虽然原生JavaScript没有直接提供与jQuery offset()等价的函数,但通过上述的getOffset()函数,我们可以比较容易地模拟出相同的功能。这对于不使用jQuery或在某些特殊情况下,需要精确控制元素位置的应用场景...
这里使用了 jQuery 对象的数组索引来获取 DOM 元素本身,然后调用其原生的 `.click()` 方法来触发点击事件。这种方法实际上是直接调用了浏览器提供的DOM API,而不是通过jQuery的事件系统。这样做可能会绕过jQuery的...
在处理DOM时,我们经常需要等待DOM完全加载完毕后才能进行操作,这时就涉及到`jQuery`的`ready`方法和浏览器原生的`DOM.onload`事件。 `jQuery.ready`方法,通常简写为`$(document).ready`,其主要功能是在DOM准备...
例如,如果我们在一个事件处理函数中,`this` 将指向触发该事件的元素。在描述中提到的例子中,`this.reset()` 是一个HTML表单元素的原生方法,用于重置表单的所有字段。由于jQuery没有提供`reset`方法的包装,所以...