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 相关文章推荐
JS中判断null、undefined与NaN的方法
Mar 24 Javascript
javascript中的括号()用法小结
Apr 14 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
jQuery+easyui中的combobox实现下拉框特效
Feb 27 Javascript
JS去除空格和换行的正则表达式(推荐)
Jun 14 Javascript
bootstrap table实例详解
Jan 06 Javascript
小程序组件之仿微信通讯录的实现代码
Sep 12 Javascript
vue中el-upload上传图片到七牛的示例代码
Oct 19 Javascript
详解在create-react-app使用less与antd按需加载
Dec 06 Javascript
Vue.js实现可排序的表格组件功能示例
Feb 19 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
Jun 27 Javascript
如何基于viewport vm适配移动端页面
Nov 13 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程序--记数器
2006/10/09 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
python中defaultdict的用法详解
2017/06/07 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
详解Python 函数如何重载?
2019/04/23 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
2019/08/01 Python
python实现超市商品销售管理系统
2019/11/22 Python
python range实例用法分享
2020/02/06 Python
Python日志器使用方法及原理解析
2020/09/27 Python
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
客户服务经理岗位职责
2014/01/29 职场文书
青年教师典范事迹材料
2014/01/31 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
运动会演讲稿200字
2014/08/25 职场文书
离职证明格式样本
2015/06/12 职场文书
清明扫墓感想
2015/08/11 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python