jQuery编程中的一些核心方法简介


Posted in Javascript onAugust 14, 2015

调用 jQuery 对象的方法很简单:

$('h1').remove();

大多数 jQuery 方法都是像上面这样被调用的,这些方法都位于 $.fn 命名空间内,这些方法称为 jQuery 对象方法。

但是也有一些方法不需要依赖于选择器的结果集,这些方法位于 jQuery 命名空间内,这些方法称为 jQuery 核心方法。如果觉得不好理解,记住下面两条即可:

  1.     所有 jQuery 选择器的方法都位于 $.fn 命名空间内。
  2.     $ 内的方法一般都是一些实用的功能性方法,这些方法不依赖选择器,这些方法的参数和返回值也都大不相同。

有些对象方法跟核心方法的名称还会相同,例如 $.fn.each 和 $.each,使用的时候需要格外注意。

jQuery 的 $ 命名空间中提供了很多实用方法:

去除字符串两遍的空白:

$.trim('  lots of extra whitespace  ');
// 返回 'lots of extra whitespace'

对数组和对象进行迭代:

$.each([ 'foo', 'bar', 'baz' ], function(idx, val) {
  console.log('element ' + idx + 'is ' + val);
});

$.each({ foo : 'bar', baz : 'bim' }, function(k, v) {
  console.log(k + ' : ' + v);
});

返回数组中某元素的索引,如果元素不存在则返回 -1

var myArray = [ 1, 2, 3, 5 ];

if ($.inArray(4, myArray) !== -1) {
  console.log('找到了');
}

用一个对象去扩展另外一个对象:

var firstObject = { foo : 'bar', a : 'b' };
var secondObject = { foo : 'baz' };

var newObject = $.extend(firstObject, secondObject);
console.log(firstObject.foo); // 'baz'
console.log(newObject.foo);  // 'baz'

如果不想改变第一个对象中的值,在 $.extend 的第一个参数中传入一个空对象即可:

var firstObject = { foo : 'bar', a : 'b' };
var secondObject = { foo : 'baz' };

var newObject = $.extend({}, firstObject, secondObject);
console.log(firstObject.foo); // 'bar'
console.log(newObject.foo);  // 'baz'

改变函数的作用域:

var myFunction = function() { console.log(this); };
var myObject = { foo : 'bar' };

myFunction(); // logs window object

var myProxyFunction = $.proxy(myFunction, myObject);
myProxyFunction(); // logs myObject object

再结合事件看如何改变函数的作用域:

var myObject = {
  myFn : function() {
    console.log(this);
  }
};

$('#foo').click(myObject.myFn); // logs DOM element #foo
$('#foo').click($.proxy(myObject, 'myFn')); // logs myObject

JavaScript 本身有类型检测的方法,jQuery 中也有,并且做得更好:

var myValue = [1, 2, 3];

// 用 JavaScript 的 typeof 操作符来判断类型
typeof myValue == 'string'; // false
typeof myValue == 'number'; // false
typeof myValue == 'undefined'; // false
typeof myValue == 'boolean'; // false

// 用恒等于 检测 null
myValue === null; // false

// 使用 jQuery 的方法来判断类型
jQuery.isFunction(myValue); // false
jQuery.isPlainObject(myValue); // false
jQuery.isArray(myValue); // true

向 HTML 元素添加额外的数据:

$('#myDiv').data('keyName', { foo : 'bar' });
$('#myDiv').data('keyName'); // { foo : 'bar' }

所要添加的数据可以是任意类型:

$('#myList li').each(function() {
  var $li = $(this), $div = $li.find('div.content');
  $li.data('contentDiv', $div);
});

// 不需要再去找那些 div 了;
// 可以直接从 list 中读取出来
var $firstLi = $('#myList li:first');
$firstLi.data('contentDiv').html('new content');

Javascript 相关文章推荐
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
Jan 13 Javascript
js不完美解决click和dblclick事件冲突问题
Jul 16 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
Nov 26 Javascript
JQuery实现鼠标移动到图片上显示边框效果
Jan 09 Javascript
js判断游览器类型及版本号的代码
May 11 Javascript
JavaScript学习笔记之Cookie对象
Jan 22 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
Mar 24 Javascript
JQuery中两个ul标签的li互相移动实现方法
May 18 Javascript
JS基于VML技术实现的五角星礼花效果代码
Oct 26 Javascript
理解javascript中的Function.prototype.bind的方法
Feb 03 Javascript
详解Angular4 路由设置相关
Aug 26 Javascript
CSS图片响应式 垂直水平居中
Aug 14 #Javascript
js实现选中复选框文字变色的方法
Aug 14 #Javascript
avalon js实现仿微博拖动图片排序
Aug 14 #Javascript
javascript实现显示和隐藏div方法汇总
Aug 14 #Javascript
freemarker判断对象是否为空的方法
Aug 13 #Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
Aug 13 #Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
Aug 13 #Javascript
You might like
PHP的一个基础知识 表单提交
2011/07/04 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
php遍历目录方法小结
2015/03/10 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
理解 JavaScript 预解析
2009/10/25 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
laypage.js分页插件使用方法详解
2019/07/27 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
python opencv之SURF算法示例
2018/02/24 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
经管应届生求职信
2013/11/17 职场文书
安全责任协议书
2014/04/21 职场文书
软件售后服务承诺书
2014/05/21 职场文书
2015年双拥工作总结
2015/04/08 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python
Java界面编程实现界面跳转
2022/06/16 Java/Android