对jQuery说放手

所有人都用jQuery,可事实上你自己也可以封装类似的函数。下面这些简单的例子也许对你有启发。

jQuery在前端开发者中很受欢迎,是程序员们偏爱的JS库。可即使jQuery能简化你的JS开发过程并让你看到更多可能性,你依然有不能用jQuery的时候。这里的一些小例子也许在jQuery不能使用时对你有帮助。

Document Ready

一个页面直到文档加载完毕才能被操作,所以我们习惯于将所有的JS代码都放在jQuery的$(document).ready()函数内:

$(document).ready(function() {
    console.log( "ready!" );
});

  

我们用JS也能实现相同效果:

document.addEventListener(‘DOMContentLoaded‘, function () {
    console.log( "ready!" );
});

  

Add Event Listeners

监听事件是JS里重要的一部分。jQuery能起轻松实现事件监听:

$(someElement).on(‘click‘,function(){
    //TODO event handler logic
});

  

当然,下面是JS的实现方法:

someElement.addEventListener(‘click‘,function(){
    //TODO event handler logic
});

  

Select Elements

jQuery通过ID,class name,tag name来选择元素超级方便,比如:

//by id
$(‘#myElement‘);

//by class name
$(‘.myElement‘);

//by tag name
$(‘div‘);

//children
$(‘#myParents‘).children();

//complex selecting
$(‘article#first p.summary‘);

  

原生JS有许多选择元素的方法。所有方法均能在IE8+的现代浏览器中使用。

//by id
document.querySelector(‘#myElement‘);

//by class name
document.querySelectorAll(‘.myElement‘);

//by tag name
document.querySelectorAll(‘div‘);

//children
$(‘#myParent‘).children();

//complex selecting
document.querySelectorAll(‘article#first p.summary‘);

  

Ajax

众所周知,Ajax可以创建异步Web应用。

下面用jQuery的get函数来做示范:

$.get("ajax/text.html",function(data){
    $(".result").html(data);
    alert("Load was performed.");
});

  

jQuery的确使ajax更易用,下面是JS的实现:
var request = new XMLHttpRequest();
request.open(‘GET‘,‘ajax/test.html‘,true);

request.onload = function(e){
  if (request.readyState == 4)
    //check if the get was successful

     if (request.status == 200){
        console.log(request.responseText);
 } else {
     console.error(request.statusText);
 }
}

  

Add and Remove Classes

如果你需要为元素添加或移除class,jQuery有两个专用的方法:

//add a class
$(‘#foo‘).addClass(‘bold‘);

//remove a class
$(‘#foo‘).removeClass(‘bold‘);

  

用JS同样很简单:

//add a class
document.getElementByID(‘foo‘).className += ‘bold‘;

//remove a class
document.getElementById(‘foo‘).className = document.getElementById(‘foo‘).className.replace(/^bold$/,‘‘);

  

Fade In
下面的例子证明了为何jQuery这么受欢迎。实现元素的fade in效果只需要一行代码:
$(el).fadeIn();

  

下面的JS实现显然有点复杂:

function fadeIn(el) {
  el.style.opacity = 0;
  var last = +new Date();
  var tick = function() {
    el.style.opacity = +el.style.opacity + (new Date() - last) / 400;
    last = +new Date();
    if (+el.style.opacity < 1) {
      (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16);
    }
  };
  tick();
}
fadeIn(el);

  

source:http://stackoverflow.com/questions/35393807/how-to-animate-a-style-property-in-plain-vanilla-javascript

Hide and Show elements

隐藏或展示元素应用很普遍,jQuery提供了hide()和show()方法来实现元素的隐藏或显示:

// Hiding element
$(el).hide();
// Showing element
$(el).show();

  

当然,JS 的实现一点也不复杂:

// Hiding element
el.style.display = ‘none‘;
// Showing element
el.style.display = ‘block‘;

  

DOM 操纵

使用jQuery操纵DOM非常简单。让我们看看向容器里添加元素;

$("#container").append("<p>more content</p>");

  

JS的实现同样轻松:

document.getElementById("#container").innerHTML += "<p>more content</p>";

  

扩展阅读:

下面的链接有更多的原生JS例子。

1.http://blog.garstasio.com/you-dont-need-jquery/why-not/

2.http://tutorialzine.com/2014/06/10-tips-for-writing-javascript-without-jquery/

3.http://blog.wearecolony.com/a-year-without-jquery/

4.https://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/

注:本文为译文

原文链接:https://dzone.com/articles/javascript-without-jquery-tips-and-practical-examp

时间: 2024-11-03 22:24:48

对jQuery说放手的相关文章

Jquery学习之路(三) 实现弹出层插件

弹出层的应用还是比较多的,登陆,一些同页面的操作,别人的总归是别人的,自己的才是自己的,所以一直以来想写个弹出层插件.不多废话,直接开始吧! 不想看可以在这里直接下载源码xsPop.zip 1:遮罩层 要弹出层,先要用一个遮罩层挡在下面的页面,此遮罩层是全屏的,页面滚动也要有,所以设置 position: fixed;还要有透明效果,下面是我定义的遮罩层css,取名mask .mask { position: fixed; width: 100%; height: 100%; backgroun

JQuery攻略(四)事件

jQuery事件处理,鼠标的单击,双击,悬停,键盘按键,文本动画..... 此章节有 1.1被点击的按钮查找 1.2事件的自动触发 1.3点击之后禁用按钮 1.4鼠标事件 1.5焦点事件 1.6CSS的操作 1.7元素创建 1.8动画隐藏和展示 1.9效果 1.10键盘输入控制 1.11防止事件冒泡 小结 1.1被点击的按钮查找 一个页面上有很多按钮,对应不同的功能,一个按钮对应一个事件,说到底就是给每个按钮绑定一个事件. <html xmlns="http://www.w3.org/19

使用jquery的load方法设计动态加载,并解决浏览器前进、后退、刷新等问题

继上一篇 使用jquery的load方法设计动态加载,并解决被加载页面JavaScript失效问题 解决了后台业务系统的部分动态加载问题,然而该框架离正常的用户体验还存在一些问题,如:浏览器的前进.后退.刷新等问题.有博友也遇到了同样的问题,接下来就针对浏览器的前进.后退.刷新进行用户体验优化. 在解决上述问题时也进行了各种search,但是大部分都是自己实现的插件,而且插件年久失修,对于新的jquery支持不佳.也有使用h5新加的history方法来实现的,由于HTML5的广泛使用,绝大部分主

基于jquery开发的UI框架整理分析

根据调查得知,现在市场中的UI框架差不多40个左右,不知大家都习惯性的用哪个框架,现在市场中有几款UI框架稍微的成熟一些,也是大家比较喜欢的一种UI框架,那应该是jQuery,有部分UI框架都是根据jQuery研发出来的产品,现在也很常见了. 国产jQuery UI框架 (jUI) DWZ DWZ富客户端框架(jQuery RIA framework), 是中国人自己开发的基于jQuery实现的Ajax RIA开源框架.设计目标是简单实用,快速开发,降低ajax开发成本. jQuery 部件布局

微信生成二维码 只需一个网址即刻 还有jquery生成二维码

<div class="orderDetails-info"> <img src="http://qr.topscan.com/api.php?text=http://123.net/index.php?s=/Home/Index/yanzheng/mai/{$dange.id}" style="width: 5rem; margin-bottom: 1rem;" > </div> http://qr.tops

Jquery基础总结

jquery获取元素索引值index()方法: jquery的index()方法 搜索匹配的元素,并返回相应元素的索引值,从0开始计数. 如果不给 .index() 方法传递参数,那么返回值就是这个jQuery对象集合中第一个元素相对于其同辈元素的位置. 如果参数是一组DOM元素或者jQuery对象,那么返回值就是传递的元素相对于原先集合的位置. 如果参数是一个选择器,那么返回值就是原先元素相对于选择器匹配元素中的位置.如果找不到匹配的元素,则返回-1. <ul> <li id=&quo

初识jQuery

jQuery简介 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是"write Less,Do More",即倡导写更少的代码,做更多的事情.它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作.事件处理.动画设计和Ajax交互. jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口:

zepto与jquery冲突的解决

问题出现的背景: 在light7框架下搭建的触屏版项目中,要拓展一个投票系统,其中投票系统有一个比较完善的上传组件,但是此组件是依赖zepto的,而原来的项目是依赖jQuery的,所以就会遇到冲突的问题: 解决方法1: jquery有一个方法叫noConflict() ,可以把jquery的$改掉. var jq=$.noConflict(); 这个时候用jq来代替jquery的$吧. 解决方法2: zepto的符号改掉 window.zp=window.Zepto = Zepto 在zepto

jQuery父级以及同级元素查找的实例

父级以及同级元素的查找在使用过程中还是蛮频繁的,下面为大家介绍下jQuery是如何实现的,感兴趣的朋友可以参考下 jQuery.parent(expr) 找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class") jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素 jQuery.children(