- 浏览: 84378 次
文章分类
- 全部博客 (136)
- 我的技术资料收集 (98)
- 具体技术 (1)
- 的技术资料收集 (4)
- All Articles (1)
- 机器学习 Machine Learning (1)
- 网络编程 (1)
- java (2)
- ava (1)
- 零散技术 (1)
- C# (3)
- 技术资料收集 (1)
- CQRS (1)
- 数据库技术(MS SQL) (1)
- .Net微观世界 (1)
- Oracle SQL学习之路 (1)
- C/C++ (1)
- JS/JQ (1)
- Js封装的插件/实例/方法 (2)
- 敏捷个人 (2)
- Javascript (1)
- 程序设计---设计模式 (1)
- Bug (1)
- 未知分类 (1)
- 程序设计 (1)
- Sharepoint (1)
- Computer Graphic (1)
- IT产品 (1)
- [06]JS/jQuery (1)
- [07]Web开发 (1)
- .NET Solution (1)
- Android (3)
- 机器学习 (1)
- 系统框架设计 (1)
- Others (1)
- 算法 (1)
- 基于Oracle Logminer数据同步 (1)
- 网页设计 (1)
- 原创翻译 (1)
- EXTJS (1)
- Jqgrid (1)
- 云计算 (1)
最新评论
原帖地址:http://www.cnblogs.com/justany/archive/2013/05/27/3096386.html
原文:http://www.leebrimelow.com/native-methods-jquery/
不太重要的没翻译= =
我们针对常用的jQuery方法以及其等价原生方法的性能做了一些测试(1, 2, 3)。
我知道你在想什么。原生方法明显要比jQuery方法快,因为jQuery方法要处理浏览器兼容以及其他一些事情。是的,我完全赞成。写这篇文章并不是出于反对使用jQuery,但如果你针对的是现代浏览器,那么使用原生方法会使性能有很大的提升。
许多开发者没有意识到大多数他们使用的jQuery方法可以使用原生方法,或者更轻量级的方法来代替。下面是一些代码示例,展示一些常用的jQuery方法,以及其等价原生方法。
选择器
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";
发表评论
-
C#WebBrowser控件使用教程与技巧收集--苏飞收集 - sufeinet
2013-06-28 12:07 1073原帖地址:http://www.cnblogs.com/suf ... -
我要喷一个自认为很垃圾的网站架构 - 老赵【苏州】
2013-06-28 12:01 1134原帖地址:http://www.cnblogs.com/lao ... -
[翻译] Oracle Database 12c 新特性Multitenant - Cheney Shue
2013-06-28 11:43 624原帖地址:http://www.cnblogs.com/ese ... -
memcahd 命令操作详解 - 阿正-WEB
2013-06-28 11:37 475原帖地址:http://www.cnblogs.com/azh ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 597原帖地址:http://www.cnblogs.com/ste ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 560原帖地址:http://www.cnblogs.com/ste ... -
RPG游戏之组队测试 - zthua
2013-06-27 10:22 560原帖地址:http://www.cnblogs.com/zth ... -
IT人们给个建议 - SOUTHER
2013-06-26 14:06 526原帖地址:http://www.cnblogs.com/sou ... -
Java向前引用容易出错的地方 - 银河使者
2013-06-26 14:00 497原帖地址:http://www.cnblogs.com/nok ... -
使用Func<T1, T2, TResult> 委托返回匿名对象 - 灰身
2013-06-26 13:54 801原帖地址:http://www.cnblo ... -
【web前端面试题整理03】来看一点CSS相关的吧 - 叶小钗
2013-06-25 10:45 788原帖地址:http://www.cnblogs.com/yex ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 10:27 624原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 10:21 568原帖地址:http://www.cnblo ... -
CentOS下Mysql安装教程 - 小学徒V
2013-06-23 15:24 612原帖地址:http://www.cnblogs.com/xia ... -
vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) - skyme
2013-06-23 15:18 840原帖地址:http://www.cnblogs.com/sky ... -
之前专门为IE6、7开发的网站如何迁移到IE10及可能遇到的问题和相应解决方案汇总 - 海之澜
2013-06-23 15:12 956原帖地址:http://www.cnblogs.com/wuz ... -
Android学习笔记--解析XML之SAX - 承香墨影
2013-06-23 15:01 413原帖地址:http://www.cnblo ... -
SQL Server 性能优化之——T-SQL TVF和标量函数
2013-06-19 09:32 676原帖地址:http://www.cnblogs.com/Boy ... -
Nginx学习笔记(二) Nginx--connection&request
2013-06-19 09:26 671原帖地址:http://www.cnblogs.com/cod ... -
从郭美美霸气侧漏看项目管理之项目经理防身术
2013-06-19 09:20 504原帖地址:http://www.cnblogs.com/had ...
相关推荐
我们针对常用的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`方法的包装,所以...