热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

不要过分依靠JQuery(一)

毫无疑问,JQuery是一款异常优异的JavaScript库,它让我们开辟项目变得越发便利轻易。不过,当你预备在一个项目(特别是挪动项目)中运用JQuery时,你真的该好好思索一下

毫无疑问,JQuery是一款异常优异的Javascript库,它让我们开辟项目变得越发便利轻易。

不过,当你预备在一个项目(特别是挪动项目)中运用JQuery时,你真的该好好思索一下,你会用到JQuery的哪些功用,是不是真的须要jQuery。由于跟着Javascript的不停改良进化,如今它内置的功用已异常壮大,在很大程度上,已能够完成之前须要在JQuery中才完成的手艺(假如你的项目须要在IE8之前的浏览器中运用,发起照样运用JQuery,如许能够省却许多兼容性问题)。

下面将列出一些能够运用Javascript来完成JQuery功用的代码:

1、查找搜刮选择器

按ID查找:

$('#test') => document.getElementById('test');

按class类名查找:

$('.test') => document.getElementsByClassName('test')

按标署名查找:

$('div') => document.getElementsByTagName('div')

固然,你也能够一致查找:

$('#test')
document.querySelector('#test')
$('#test div') => document.querySelectorAll('#test div')
$('#test').find('span') => document.querySelectorAll('#test span');

猎取单个元素:

$('#test div').eq(0)[0] => document.querySelectorAll('#test div')[0]

猎取HTML、head、body:

$('html') => document.documentElement
$('head') => document.head
$('body') => document.body

推断节点是不是存在

$('#test').length > 0 => document.getElementById('test') !== null
$('div').length > 0 => document.querySelectorAll('div').length > 0

遍历节点:

$('div').each(function(i, elem) {})
function forEach(elems, callback) {
if([].forEach) {
[].forEach.call(elems, callback);
} else {
for(var i = 0; i callback(elems[i], i);
}
}
}
var div = document.querySelectorAll('div');
forEach(div, function(elem, i){
});

清空节点

$('#test').empty() => document.getElementById('test').innerHTML = '';

节点比较

$('div').is($('#test')) => document.querySelector('div') === document.getElementById('test')

2、猎取/设置内容(值)

猎取/设置元素内的内容

$('div').html() => document.querySelecotr('div').innerHTML
$('div').text() => var t = document.querySelector('div');
t.textContent || t.innerText;
$('div').html('abc'); => document.querySelecotr('div').innerHTML = 'abc';
$('div;).text('abc') => document.querySelecotr('div').textCOntent= 'abc'

猎取包括元素自身的内容

$('

').append($('#test').clone()).html() => document.getElementById('test').outerHTML
$('
').append($('#test').clone()).html('abc') => document.getElementById('test').outerHTML = 'abc'

猎取表单值

$('input').val() => document.querySelector('input').value
$('input').val('abc') => document.querySelector('input').value = 'abc'

3、class类名操纵

类名新增

$('#test').addClass('a')
function addClass(elem, className) {
if(elem.classList) {
elem.classList.add(className);
} eles {
elem.className += ' ' + className;
}
}
addClass(document.getElementById('test'), 'a');

类名删除

$('#test').removeClass('a');
function removeClass(elem, className) {
if(elem.classList) {
elem.classList.remove(className);
} else {
elem.className = elem.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
}
}
removeClass(document.getElementById('test'), 'a');

类名包括:

$('#test').hasClass('a')
function hasClass(elem, className) {
if(elem.classList) {
return elem.classList.contains(className);
} else {
return new RegExp('(^| )' + className + '( |$)', 'gi').test(elem.className);
}
}
hasClass(document.getElementById('test'), 'a');

4、节点操纵

建立节点

$('

') => document.createElement('div')

复制节点:

$('div').clone() => document.querySelector('div').cloneNode(true)

插进去节点:

$('div').append('')
var span = document.createElement('span');
document.querySelector('div').appendChild(span);

在指定节点之前插进去新的子节点

$('').insertBefore('#test');
var t = document.getElementById('test');
var span = document.createElement('span');
t.parentNode.insertBefore(span, t);
/*更简朴的*/
t.insertAdjacentHTML('beforeBegin', '');

在指定节点后插进去新的子节点:

$('').insertAfter('#test')
function insertAfter(elem, newNode){
if(elem.nextElementSibling) {
elem.parentNode.insertBefore(newNode, elem.nextElementSibling);
} else {
elem.parentNode.appendChild(newNode);
}
}
var t = document.getElementById('test');
var span = document.createElement('span');
insertAfter(t, span);
/*更简朴的*/
t.insertAdjacentHTML('afterEnd', '');

猎取父节点

$('#test').parent() => document.getElementById('test').parentNode

删除节点

$('#test').remove()
var t = document.getElementById('test');
t.parentNode.removeChild(t);

猎取Element子节点

$('#test').children()
function children(elem) {
if(elem.children) {
return elem.children;
} else {
var children = [];
for (var i = el.children.length; i--;) {
if (el.children[i].nodeType != 8)
children.unshift(el.children[i]);
}
return children;
}
}
children(document.getElementById('test'));

猎取下一个兄弟节点:

$('#test').next()
function nextElementSibling(elem) {
if(elem.nextElementSibling) {
return elem.nextElementSibling;
} else {
do {
elem = elem.nextSibling;
} while ( elem && elem.nodeType !== 1 );
return elem;
}
}
nextElementSibling(document.getElementById('test'));

猎取上一个兄弟节点:

$('#test').prev()
function previousElementSibling(elem) {
if(elem.previousElementSibling) {
return elem.previousElementSibling;
} else {
do {
elem = elem.previousSibling;
} while ( elem && elem.nodeType !== 1 );
return elem;
}
}
previousElementSibling(document.getElementById('test'));

5、属性操纵

猎取属性

$('#test').attr('class') => document.getElementById('test').getAttribute('class')

删除属性

$('#test').removeAttr('class') => document.getElementById('test').removeAttribute('class')

设置属性

$('#test').attr('class', 'abc') => document.getElementById('test').setAttribute('class', 'abc');

6、CSS款式操纵

设置款式

$('#test').css('height', '10px'); => document.getElementById('test').style.height = '10px';

猎取款式

$('#test').css('height')
var getStyle = function(dom, attr) {
return dom.currentStyle ? dom.currentStyle[attr] : getComputedStyle(dom, false)[attr];
};
getStyle(document.getElementById('test'), 'height');

猎取伪类的CSS款式

window.getComputedStyle(el , ":after")[attrName];

注:IE是不支持猎取伪类的

7、字符串操纵

去除空格

$.trim(' abc ')
function trim(str){
if(str.trim) {
return str.trim();
} else {
return str.replace(/^\s+|\s+$/g, '');
}
}
trim(' abc ');

8、JSON操纵

JSON序列化

$.stringify({name: "TG"}) => JSON.stringify({name: "TG"})

JSON反序列化

$.parseJSON('{ "name": "TG" }') => JSON.parse('{ "name": "TG" }')

原文链接:不要过分依靠JQuery(一)

若有毛病,迎接斧正!若有更好发起,迎接留言!


推荐阅读
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • PHP中的curl_multi系列函数可以实现同时请求多个URL来实现并发,而不是像普通curl函数那样请求后会阻塞,直到结果返回才进行下一个请求。因此在批量请求URL时可通过curl_multi系列函数提升程序的运行效率。curl普通请求$startT ... [详细]
  • 巧用arguments在Javascript的函数中有个名为arguments的类数组对象。它看起来是那么的诡异而且名不经传,但众多的Javascript库都使用着它强大的功能。所 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • Python中的PyInputPlus模块原文:https ... [详细]
  • 1简介本文结合数字信号处理课程和Matlab程序设计课程的相关知识,给出了基于Matlab的音乐播放器的总体设计方案,介绍了播放器主要模块的功能,设计与实现方法.我们将该设 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
author-avatar
嘉心面包-1908
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有