读jQuery官方文档:数据方法与辅助方法
数据方法
有时候你可能想要在元素上面储存数据。由于浏览器兼容性问题,用原生JavaScript处理元素上的数据可能会造成内存溢出,jQuery可以帮你自动处理这些问题:
//储存和取出元素数据
$('#myDiv').data('keyName', {foo: 'bar'});
$('#myDiv').data('keyName'); //returns {foo: 'bar'}
你可以在元素上面储存任何数据。你甚至可以用Data方法把两个元素连接起来。
比如说,你想要把li
和li
包含的div
连接起来。
//用.data()把两个元素连接起来
$('#myList').each(function() {
var li = $(this);
//利用遍历找到div.content,地址储存在div变量处
var div = li.find('div.content');
//把div的内容储存在li中
li.data('contentDiv', div);
});
//无需再利用遍历找到div.content
//可以直接在li的数据上面调用
var firstList = $('#myList li:first');
firstList.data('contentDiv').html('new content!');
辅助方法
jQuery在$
命名空间提供了很多便捷的辅助方法,可以用来简化日常操作。
比如,你可以用$.trim()
来裁剪字符串两段的空白:
//返回'hello, world'
$.trim(' hello, world ');
用$.each()
遍历数组,或者对象:
$.each(['foo', 'bar', 'baz'], function(index, value) {
console.log('Index: ' + index + ' Value: ' + value);
});
$.each({foo: 'bar', baz: 'bim'}, function(k, v) {
console.log(k + ' : ' + v);
});
注意, $.each()
和.each()
是不一样的,.each()
用于遍历jQuery对象。
还可以用$.inArray()
找到某个值在数组中的位置:
var myArray = ['a', 'b', 'c'];
if ($.inArray(4, myArray) !== -1) {
console.log('found it');
}
$.inArray()
如果找到了给定的值,返回该值在数组中的索引,否则返回-1。
用$.proxy()
改变函数执行的作用域
var myFunction = function() {
console.log(this);
};
var myObject = {
foo: 'bar'
};
myFunction(); //window
myProxyFunction = $.proxy(myFunction, myObject);
myProxyFunction(); //myObject
$.proxy()
接收第一个参数是函数,第二个参数是指定一个对象,然后返回一个在指定对象作用域运行的函数。
这个例子中,myFuntion()因为是在全局作用域定义的,所以this是window;指定$.proxy()
方法第二个参数myObject后,返回了在myObject对象作用域执行的函数,然后赋值给了myProxyFunction, 所以执行myProxyFunction后,this返回myObjet。
有时候你有一个对象方法,你想要this总是指向该对象的时候:
var myObj = {
myFn: function() {
console.log(this);
}
}
$('#foo').click(myObj.myFn); //HTMLElement #foo,这不是我们想要的,我们想要this返回myObj
$('#foo').click($.proxy(myObj, 'myFn'); //myObj
有时候,使用原生的typeof方法判断数据类型令人十分困扰;例如数组元素typeof返回的是object(因为array类型在JavaScript中是也是对象);自定义的对象typeof全部返回object;虽然是正确的,但是如果我们想要更加精准的类型呢?
在jQuery中,你可以这样:
$.isArray([]); //true
$.isFunction(function() {}); //true
$.isNumberic(3.14); //true
也可以这样:
$.type(true); //'boolean'
$.type(3); //'number'
$.type("text"); //'string'
$.type(function() {}); //'function'
$.type(new Boolean()); //'boolean'
$.type(new Number(3)); //'number'
$.type(new String('text')); //'string'
$.type(new Function()); //'function'
$.type([]); //'array'
$.type(null); //'null'
$.type( /text/ ); //'regexp'
$.type(new Date()); //'date'
读jQuery官方文档:数据方法与辅助方法的更多相关文章
- 读jQuery官方文档:$(document).ready()与避免冲突
$(document).ready() 通常你想在DOM结构加载完毕之后才执行相关脚本.使用原生JavaScript,你可能调用window.onload = function() { ... }, ...
- 读jQuery官方文档:遍历
遍历 jQuery的快捷遍历方法可以快速定位到想要的元素.查找祖先元素 html<div class="grandparent"> <div class=&quo ...
- 读jQuery官方文档:样式
样式 使用jQuery,无论是设置或者获取元素样式都十分简便. // 支持驼峰式和分割线式,两种方式等价(原生JavaScript只支持驼峰式) $('h1').css('fontSize'); $( ...
- 读jQuery官方文档:jQuery对象
jQuery对象 当用$符号包裹一个CSS风格选择器的时候,你得到一个jQuery对象. var heading = $('h1'); jQuery对象是对DOM ELement封装过后的数组.注意, ...
- 读BeautifulSoup官方文档之与bs有关的对象和属性(1)
自从10号又是5天没更, 是, 我再一次断更... 原因是朋友在搞python, 老问我问题, 我python也是很久没碰了, 于是为了解决他的问题, 我只能重新开始研究python, 为了快速找回感 ...
- 读vue-cli3 官方文档的一些学习记录
原来一直以为vue@cli3 就是创建模板的工具,读了官方文档才知道原来这么有用,不少配置让我长见识了 Prefetch 懒加载配置 懒加载相信大家都是知道的,使用Import() 语法就可以在需要的 ...
- 读BeautifulSoup官方文档之html树的搜索(1)
之前介绍了有关的四个对象以及他们的属性, 但是一般情况下要在杂乱的html中提取我们所需的tag(tag中包含的信息)是比较复杂的, 现在我们可以来看看到底有些什么搜索的方法. 最主要的两个方法当然是 ...
- 读BeautifulSoup官方文档之html树的打印
prettify()能返回一个格式良好的html的Unicode字符串 : markup = '<a href="http://example.com/">I link ...
- 读BeautifulSoup官方文档之html树的修改
修改html树无非是对其中标签的改动, 改动标签的名字(也就是类型), 属性和标签里的内容... 先讲这边提供了很方便的方法来对其进行改动... soup = BeautifulSoup('<b ...
随机推荐
- hdu5785--Interesting(manacher)
题意:求给定字符串的三元组(I,J,K) 使得S[i..j] 和 S[j+1..k] 都是回文串.求所有满足条件的三元组 ∑(i*k) 题解:求出以j为结尾的回文串起始位置的和记为lv[j],和以j ...
- Java TreeMap 源码解析
继上篇文章介绍完了HashMap,这篇文章开始介绍Map系列另一个比较重要的类TreeMap. 大家也许能感觉到,网络上介绍HashMap的文章比较多,但是介绍TreeMap反而不那么多,这里面是有原 ...
- hdu 1595 find the longest of the shortest【最短路枚举删边求删除每条边后的最短路,并从这些最短路中找出最长的那条】
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 ...
- css控制内容显示,自动加"..."
.css{ overflow:hidden; white-space:nowrap; text-overflow:ellipsis; width:100px; } c ...
- Jquery花园
1.在线jquery api:http://hemin.cn/jq/ 2.jquery官网:jquery.com 3.http://www.jqcool.net/ 4.http://www.fron ...
- 表单,css
- Oracle- 表的管理
一.表名和列的命名规则 1.必须以字母开头. 2.长度不能超过30字符. 3.不能使用Oracle的保留字. 4.只能使用如下字符 A-Z,a-z,0-9,$,#等. 二.Oracle支持的数据类型 ...
- Linux基本操作 9----- 认识与学习bash
一 认识bash这个shell 1 管理整个计算机硬件的其实就是操作系统的内核,这个内核是需要被保护的,所以我们一般用户就只能通过shell来跟内核通信,以让内核达到我们所想打到的工作. 2 只要能够 ...
- RocketMQ入门(2)最佳实践
转自:http://www.changeself.net/archives/rocketmq入门(2)最佳实践.html RocketMQ入门(2)最佳实践 一.服务端安装部署 我是在虚拟机中的Cen ...
- Android设计模式系列-组合模式
Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用.在android UI设计,几乎所有的widget和布局类都依靠这两个类.组合模式,Compos ...