这篇看看jq的slice方法,源码是jQuery1.4.2
。先了解下first,last,eq方法。以下html片段
<div id="a">A</div>
<div id="b">B</div>
<div id="c">C</div>
<div id="d">D</div>
$('div').first() 返回jq对象集合的第一个元素, 即Div[id=a],结构:{0:div,length:1,...};//...表示省略了其它属性
$('div').last() 返回jq对象集合的最后的元素, 即Div[id=d],结构:{0:div,length:1,...};
$('div').eq(2) 返回jq对象匹配的第三个元素, 即Div[id=c],结构:{0:div,length:1,...};
查看jq1.4.2源码得知:
1,first,last方法中直接调用了eq方法。
2,eq方法中调用了slice方法。
因此$().slice方法才是根本。该方法让我们自然想到数组的slice方法,实际上jquery正是利用Array的push和slice方法。
1,利用Array.prototype.slice方法将 伪数组 转成 数组
2,利用Array.prototype.push方法将 数组 转成 伪数组
以下示例更容易理解了:
var json = {0:'one',1:'two',2:'three',length:3}, //伪数组
ary = ['one','two','three'];//数组
//将伪数组转成数组
function setJsonToArray(json){
var slice = Array.prototype.slice;
return slice.call(json,0);
}
//将数组转成伪数组
function setArrayToJson(ary){
var obj = {}, push = Array.prototype.push;
push.apply(obj,ary);
return obj;
}
console.log(setJsonToArray(json));
console.log(setArrayToJson(ary));
参考:http://snandy.iteye.com/blog/580373
当然jq1.4.2中的slice方法调用了pushStack。这里简写了slice,如下:
slice : function(){
var ret = $();//关键的一句,构造一个新的jq对象,
var ary = slice.apply(this,arguments);//这里的this是jq对象,根据参数转成数组子集
push.apply(ret,ary);//转成jq对象,即伪数组形式
return ret;
},
完整源码见附件
分享到:
相关推荐
**jQuery(JQ)过滤方法详解** jQuery,简称JQ,是JavaScript的一个库,它极大地简化了DOM操作、事件处理、动画设计以及Ajax交互。在处理HTML文档时,过滤方法是jQuery的重要特性之一,用于从匹配的元素集合中选择...
然而,由于jQuery对象可以无缝地与JavaScript原生对象转换,因此我们可以在jQuery对象上使用JavaScript的字符串方法。 1. 删除字符串最后一个字符: 要删除字符串的最后一个字符,我们可以使用JavaScript的`...
`slice(-2)`方法是为了确保月份显示为两位数。 为了提高用户体验,我们可以添加一些交互效果,如禁用已过期的年份或月份,或者在选择年份时自动更新月份范围。例如,当用户选择一个年份后,可以重新填充月份选项,...
通过结合其他jQuery方法,如`eq()`(根据索引选取元素)或`slice()`(根据开始和结束索引选取元素),我们可以实现更复杂的DOM操作。例如,如果我们想获取所有`<li>`元素中索引为偶数的元素,可以这样做: ```...
在本文中,我们将深入探讨如何使用JavaScript(JS)和jQuery(JQ)库来实现图片旋转,以及一种独特的“球形旋转”效果和字母更换的技巧。这些技术在网页动态展示、用户交互以及创意设计中都非常有用。 首先,我们要...
我们可以使用`match()`函数配合正则表达式捕获每组连续的四位数字,然后用`join()`和`slice()`等方法来处理结果。 下面是一个可能的实现: ```javascript function formatNumbers(numStr) { // 使用正则表达式...
本示例“jq静态页面实现分页”聚焦于使用JavaScript库jQuery来实现这一功能,特别是对于静态HTML页面。下面我们将详细探讨如何使用jQuery实现静态页面的分页功能。 首先,我们需要理解分页的基本概念。分页通常由...
var level = $(el).prop('tagName').toLowerCase().slice(1); var title = $(el).text(); var id = $(el).attr('id'); toc.append(`<li><a href="#${id}">${'.'.repeat(level)} ${title}</a></li>`); }); ``` ...
总结,通过jQuery我们可以方便地将JSON对象转换为适合表单提交的格式,并利用Ajax方法发送到服务器。这极大地提高了前端开发的效率和灵活性,使得前端和后端的数据交互变得更加简单。在实际项目中,根据具体需求,...
### jq(jQuery)常用方法详解 #### 一、选择元素 **1.1 基本选择器** - `$("标签")`: 选取所有指定标签的元素。 - `$("#id")`: 通过ID选择单个元素。 - `$(".class")`: 通过类名选择元素。 - `$("标签,#id,....
在 jQuery 中,虽然 jQuery 自身并不直接提供对数组操作的扩展,但它可以与 JavaScript 的数组方法一起使用。jQuery 对象经常被用作类似数组的对象,可以通过索引来访问元素,例如 `$(selector)[index]`。同时,...
《JQ文字无缝滚动效果详解》 在网页设计中,为了吸引用户的注意力并展示大量信息,文字无缝滚动效果被广泛应用。这种效果可以让文字像新闻滚动条一样,不断循环滚动,既节省空间,又富有动态美感。本文将深入探讨...
$('#myTable tbody tr').hide().slice(index, index + visibleRows).show(); index = (index + visibleRows) % totalRows; } toggleRows(); // 初始显示 setInterval(toggleRows, 2000); // 每2秒切换一次 })...
#### 二、添加 jQuery 对象方法 在 jQuery 中,可以通过扩展 `jQuery.prototype` 或者它的别名 `$.fn` 来添加新的方法。这些方法可以直接作用于 jQuery 对象上,使得 jQuery 更加灵活和强大。 **示例代码**: ```...
在前端开发中,jQuery(通常简称为jq)是一种广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画效果和Ajax交互。在这个“jq实现led数字效果”的项目中,我们将探讨如何利用jQuery来创建LED风格的数字显示...
jQuery提供了一系列方法来方便我们对这些类数组对象进行操作。以下是一些重要的jQuery类数组操作方法的详细说明: 1. **size()**: 这个方法返回jQuery对象中元素的数量。例如,`$(‘a’).size()`会返回页面上所有`...
.map(word => word.charAt(0).toUpperCase() + word.slice(1)) .join(' '); console.log(pinyinName); // 输出 "Wang Si Cong" ``` 这里,我们先将生成的拼音字符串拆分成单词数组,然后对每个单词的首字母进行...
`slice()`方法接受两个参数,分别表示开始和结束的索引(不包括结束索引)。因此,`slice(0, 1)`选取了索引0的元素,即每个`ul`的第一个`li`。 这些方法在实际应用中各有优缺点。`:first`和`.first()`在语法上简洁...
JavaScript提供了`Date`对象来处理日期和时间。要实时显示时间,可以创建一个函数,该函数获取当前时间并将其格式化为易读的字符串,然后将这个字符串设置到HTML元素的文本内容中。使用`setInterval`函数每秒调用一...
var event = this.events[type], args = Array.prototype.slice.call(arguments, 1); if (event) { event.fireWith(this, args); } } }; ``` 在这个基类中,`events`对象用于存储各个类型的事件回调列表。`on`...