数据方法

有时候你可能想要在元素上面储存数据。由于浏览器兼容性问题,用原生JavaScript处理元素上的数据可能会造成内存溢出,jQuery可以帮你自动处理这些问题:

//储存和取出元素数据
$('#myDiv').data('keyName', {foo: 'bar'}); $('#myDiv').data('keyName'); //returns {foo: 'bar'}

你可以在元素上面储存任何数据。你甚至可以用Data方法把两个元素连接起来。

比如说,你想要把lili包含的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官方文档:数据方法与辅助方法的更多相关文章

  1. 读jQuery官方文档:$(document).ready()与避免冲突

    $(document).ready() 通常你想在DOM结构加载完毕之后才执行相关脚本.使用原生JavaScript,你可能调用window.onload = function() { ... }, ...

  2. 读jQuery官方文档:遍历

    遍历 jQuery的快捷遍历方法可以快速定位到想要的元素.查找祖先元素 html<div class="grandparent"> <div class=&quo ...

  3. 读jQuery官方文档:样式

    样式 使用jQuery,无论是设置或者获取元素样式都十分简便. // 支持驼峰式和分割线式,两种方式等价(原生JavaScript只支持驼峰式) $('h1').css('fontSize'); $( ...

  4. 读jQuery官方文档:jQuery对象

    jQuery对象 当用$符号包裹一个CSS风格选择器的时候,你得到一个jQuery对象. var heading = $('h1'); jQuery对象是对DOM ELement封装过后的数组.注意, ...

  5. 读BeautifulSoup官方文档之与bs有关的对象和属性(1)

    自从10号又是5天没更, 是, 我再一次断更... 原因是朋友在搞python, 老问我问题, 我python也是很久没碰了, 于是为了解决他的问题, 我只能重新开始研究python, 为了快速找回感 ...

  6. 读vue-cli3 官方文档的一些学习记录

    原来一直以为vue@cli3 就是创建模板的工具,读了官方文档才知道原来这么有用,不少配置让我长见识了 Prefetch 懒加载配置 懒加载相信大家都是知道的,使用Import() 语法就可以在需要的 ...

  7. 读BeautifulSoup官方文档之html树的搜索(1)

    之前介绍了有关的四个对象以及他们的属性, 但是一般情况下要在杂乱的html中提取我们所需的tag(tag中包含的信息)是比较复杂的, 现在我们可以来看看到底有些什么搜索的方法. 最主要的两个方法当然是 ...

  8. 读BeautifulSoup官方文档之html树的打印

    prettify()能返回一个格式良好的html的Unicode字符串 : markup = '<a href="http://example.com/">I link ...

  9. 读BeautifulSoup官方文档之html树的修改

    修改html树无非是对其中标签的改动, 改动标签的名字(也就是类型), 属性和标签里的内容... 先讲这边提供了很方便的方法来对其进行改动... soup = BeautifulSoup('<b ...

随机推荐

  1. NOIP2006 作业调度方案

    1.             作业调度方案 (jsp.pas/c/cpp) [问题描述] 我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成.每个工件的每道工 ...

  2. 【Java基础】Java设计模式简介

    什么是设计模式 设计模式(Design pattern)是一套被反复使用.被多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.设计 ...

  3. HW5.32

    public class Solution { public static void main(String[] args) { int n1 = (int)(Math.random() * 5 + ...

  4. 查找进程对应的PID和对应的端口号

    第一步:首先打开任务管理器.之后左键单击查看,点击下面的选择列. 第二步:之后进入如下界面,把PID勾上.这是我们就可以查看到进程的PID(process id)号了 第三步:首先我们打开DOS窗口, ...

  5. C语言/C++中怎样产生随机数

    C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,和time()函数. 需要说明的是,iostream头文件中就有srand函数的定义,不需要再额外引入stdlib. ...

  6. 【C++深入浅出】设计模式学习之观察者模式

    前言 前两天学习了weak_ptr以后还是不甚明了,一则需要实际应用去锤炼,二来就是不懂观察者模式. 正文 观察者模式又叫发布-订阅模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对 ...

  7. ThinkPHP中URL解析原理,以及URL路由使用教程!

    几个概念: THINKPHP 是一个MVC框架,使用PATHINFO解析出分组名,模块名,方法名,以及参数. PATHINFO:就是 http://localhost/index.php/Home/I ...

  8. 用RelativeLayout布局可以在imageview中写上文字

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  9. VK Cup 2015 - Finals, online mirror D. Restructuring Company 并查集

    D. Restructuring Company Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...

  10. java String 两种不同的赋值 比较

    原文:http://blog.163.com/woshihezhonghua@126/blog/static/1271436362012101214031911/ 首先明确一点,String是一个类. ...