`

jQuery函数的等价原生函数

阅读更多
原帖地址:http://www.cnblogs.com/justany/archive/2013/05/27/3096386.html

原文:http://www.leebrimelow.com/native-methods-jquery/


不太重要的没翻译= =



 



我们针对常用的jQuery方法以及其等价原生方法的性能做了一些测试(123)。


我知道你在想什么。原生方法明显要比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";


 

本文链接

分享到:
评论

相关推荐

    jQuery函数的等价原生函数代码示例

    我们针对常用的jQuery方法以及其等价原生方法的性能做了一些测试(1, 2, 3)。 我知道你在想什么。原生方法明显要比jQuery方法快,因为jQuery方法要处理浏览器兼容以及其他一些事情。是的,我完全赞成。写这篇文章并...

    jquery源代码

    这两个函数在内部实现上是等价的,它们接受各种类型的参数,如CSS选择器、HTML字符串、DOM元素或已存在的jQuery对象。 2. CSS选择器引擎:jQuery内部使用Sizzle选择器引擎来解析和匹配CSS选择器,提供高效的DOM遍历...

    jquery 笔记精要

    - **jQuery源码初步分析**:jQuery采用了自执行函数的形式,为`window`对象扩展了两个等价的函数`jQuery()`和`$()`。通过调用`$()`函数,返回的是一个由jQuery封装的伪数组对象,通常称之为jQuery对象。 - **核心...

    jQuery基础教程

    4. **文档加载完成事件**:`jQuery(callback)`,等价于`$(document).ready()`,用于在文档完全加载后执行回调函数,确保DOM元素可用。 #### 三、jQuery的应用场景 - **网页动态更新**:利用Ajax技术无缝更新页面...

    原生JS取代一些JQuery方法的简单实现

    原生JavaScript中没有直接等价的方法,但可以自定义一个`remove()`函数来移除元素。 ```javascript // jQuery移除元素 $('.el').remove(); // 原生JavaScript移除元素 function remove(el) { var toRemove = ...

    jQuery教程

    - **DOM对象到jQuery对象**: 将一个DOM对象转化为jQuery对象,可以通过$()函数来完成,例如: ```javascript var domObj = document.getElementById("test"); var jqObj = $(domObj); // 转换为jQuery对象 ``` ...

    jQuery 1.2 Cheat Sheet

    - **jQuery(elements):** 接受一组原生 DOM 元素作为参数,返回一个包含这些元素的 jQuery 对象。 - **jQuery(cb):** 如果提供了一个函数 `cb` 作为参数,则会在文档加载完成后执行该函数。 - **jQueryObject ...

    JQuery入门—编写一个简单的JQuery应用案例

    内容部分还介绍了JQuery的基本结构,其中使用了`$(document).ready()`函数,它相当于原生JavaScript的`window.onload()`函数。这个函数确保了在DOM树构建完毕后再执行其中的代码,这样可以确保对DOM元素的操作是安全...

    eq/get/find

    `get`函数在JavaScript原生数组和jQuery中都有应用。在原生数组中,`get(index)`与`arr[index]`等价,它返回指定索引处的元素。而在jQuery中,`get(index)`与`eq(index)`类似,但它会返回DOM元素而不是jQuery对象。...

    jQuery对象和DOM对象使用说明

    `方法是等价的,但前者是jQuery特有的方法。需要注意的是,jQuery对象不能直接使用DOM对象的方法,如`$("#id").innerHTML`和`$("#id").checked`是错误的写法,应使用`$("#id").html()`和`$("#id").attr("checked")`...

    网页效果:js或jQuery实现图片左右无缝滚动.pdf

    在JavaScript中,我们主要使用`Marquee`函数(虽然在现代浏览器中不推荐使用原生的`&lt;marquee&gt;`标签),`offsetWidth`属性来获取元素宽度,以及`setInterval`和`clearInterval`来控制滚动。 ```javascript var ...

    jQuery.check:jQuery.check()模仿了switch的某些功能,但是它并不是100%等价的,例如,不支持多条件情况。 还有一个香草js版本可用

    为了弥补这一不足,社区开发了一个名为jQuery.check的插件,它为JavaScript提供了一种类似`switch`的语法糖,尽管它并不完全等同于原生的`switch`。 jQuery.check是基于jQuery库的一个扩展,它的核心思想是提供一个...

    jQuery:unbind方法的使用详解

    在某些情况下,你可以在事件处理函数内部根据条件解绑事件,这时可以使用当前的`jQuery.Event`对象: ```javascript $('a').click(function(event) { if (条件满足) { $('a').unbind(event); } }); ``` 这里`...

    JQuery从头学起第二讲

    这与原生JavaScript中的`document.getElementById("txt1").value`方法是等价的。 ```javascript $("#txt1").val(); ``` 在示例中还提到了如何通过`$(document).ready()`函数来绑定事件处理器,使得在DOM加载完成后...

    js实现jquery的offset()方法实例

    总之,虽然原生JavaScript没有直接提供与jQuery offset()等价的函数,但通过上述的getOffset()函数,我们可以比较容易地模拟出相同的功能。这对于不使用jQuery或在某些特殊情况下,需要精确控制元素位置的应用场景...

    jquery 触发a链接点击事件解决方案

    这里使用了 jQuery 对象的数组索引来获取 DOM 元素本身,然后调用其原生的 `.click()` 方法来触发点击事件。这种方法实际上是直接调用了浏览器提供的DOM API,而不是通过jQuery的事件系统。这样做可能会绕过jQuery的...

    Jquery知识点一 Jquery的ready和Dom的onload的区别

    在处理DOM时,我们经常需要等待DOM完全加载完毕后才能进行操作,这时就涉及到`jQuery`的`ready`方法和浏览器原生的`DOM.onload`事件。 `jQuery.ready`方法,通常简写为`$(document).ready`,其主要功能是在DOM准备...

    通过$(this)使用jQuery包装后的方法或属性

    例如,如果我们在一个事件处理函数中,`this` 将指向触发该事件的元素。在描述中提到的例子中,`this.reset()` 是一个HTML表单元素的原生方法,用于重置表单的所有字段。由于jQuery没有提供`reset`方法的包装,所以...

Global site tag (gtag.js) - Google Analytics