`
zhouyrt
  • 浏览: 1173186 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读jq之四(实用方法)

阅读更多

这篇看了jQuery.map,jQuery().map,jQuery.grep,jQuery.merge。

 

1,jQuery.map

该方法是挂在functoin jQuery上静态方法,通过jQuery.extend({...})方式扩展的。作用是数组(伪数组)每个元素上运行一个函数,返回新修改的数组。

见:http://api.jquery.com/jQuery.map/

 

2,jQuery().map

该方法是jquery对象的一个方法,和jQuery().each一样挂在jQuery.prototype上的。其调用静态的jQuery.map,第一个参数是tihs,该this即为jquery对象自身。它只能对jQuery对象进行修改。

见:http://api.jquery.com/map/

 

3,jQuery.grep

该方法是挂在function jQuery上的静态方法,通过jQuery.extend({...})方式扩展的。作用是过滤数组。

见:http://api.jquery.com/jQuery.grep/

 

4,jQuery.merge

该方法是挂在function jQuery上的静态方法,通过jQuery.extend({...})方式扩展的。作用是合并两个数组,第一个参数数组会被修改。

见:http://api.jquery.com/jQuery.merge/

 

简化如下:

function $(selector){
	return new $.prototype.init(selector);
}
$.fn=$.prototype={	 
	//简化的选择器,为测试$().each方法。这里只需返回一个element集合即可
	init:function(selector){
		var els = document.getElementsByTagName(selector);
		for(var i=0;i<els.length;i++){
			this[i]=els[i];
		}		
        this.length=els.length;
	},
	//$().each,调用静态的$.each
	each:function(callback){
		return $.each( this, callback );
	},
	//$("p").map,调用静态的$.map
	map: function( callback ) {
		return $.map(this, function( elem, i ) {
			return callback.call( elem, i, elem );
		});
	}
}
$.fn.init.prototype=$.fn;

//简化的extend			
$.extend = function(obj){
	for(var a in obj)
		this[a] = obj[a];
};

//给$上添加一些静态方法
$.extend({
	//简化的$.each,可以迭代数组和对象
	each : function(object,callback){
		var name, i = 0,
		length = object.length,
		isObj = length === undefined;
				
		if ( isObj ) {//对对象进行迭代
			for ( name in object ) {		
				if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
					break;
				}
			}		
		} else {//对数组进行迭代
			for ( var value = object[0];
				i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
		}		
	},
	//合并两个数组,会改变first
	merge: function( first, second ) {
		var i = first.length, j = 0;

		if ( typeof second.length === "number" ) {
			for ( var l = second.length; j < l; j++ ) {
				first[ i++ ] = second[ j ];
			}
		} else {
			while ( second[j] !== undefined ) {
				first[ i++ ] = second[ j++ ];
			}
		}
		first.length = i;
		return first;
	},
	//数组每个元素上运行一个函数,返回新修改的数组
	map: function( elems, callback ) {
		var ret = [], value;

		for ( var i = 0, length = elems.length; i < length; i++ ) {
			value = callback( elems[ i ], i );
			if ( value != null ) {
				ret[ ret.length ] = value;
			}
		}
		return ret.concat.apply( [], ret );
	},
	//过滤数组
	grep: function( elems, callback, inv ) {
		var ret = [];
		
		for ( var i = 0, length = elems.length; i < length; i++ ) {
			if ( !inv !== !callback( elems[ i ], i ) ) {
				ret.push( elems[ i ] );
			}
		}
		return ret;
	}
});

 

 

分享到:
评论

相关推荐

    JQ 设置和获取HTML和文本和值

    而"源码"和"工具"这两个标签暗示了这篇博客可能还会深入到jQuery的内部工作原理,并提供实用的代码示例,帮助读者更好地理解和运用这些功能。遗憾的是,由于没有给出具体的博客内容,我们无法提供更详细的分析,但...

    总结了大部分jQueryAPI替代的方法

    2. **扩展函数**:jQuery提供了很多实用的辅助函数,如`.trim()`, `.map()`, `.grep()`, `.inArray()`, 等。在原生JavaScript中,我们可以使用ES6的扩展,或者自定义这些函数。 总结起来,从jQuery转向原生...

    JQ+CSS实现鼠标上移显示更多内容的排行列表

    资源特点:代码非常短)、易读性强、重点注释、方便扩展、样式美观、使用JQ框架。 适用人群:前端从业职,新手小白,有网站开发能力对美工有所欠缺的后端工程师。 提示:------------------------------------------...

    Jsp jQuery实例集.rar

    自己收集的一些Jsp jQuery编程实例集,都是挺简单的,可作为Ajax学习的起步资料,在JSP环境下使用jquery实现Ajax功能的新手...里面一共包括7个例子,有结合数据库的,对于实现数据库的无刷新读娶修改有一定示范作用。

    jQuery商品分类选择

    通过使用jQuery,开发者可以更高效地编写出简洁、易读的代码,减少浏览器兼容性问题,提升网页性能。 在“jQuery商品分类选择”插件中,它利用jQuery的事件处理机制,为用户提供多种选择商品的方式,如单选、多选、...

    js,jq,css多方面实现简易下拉菜单功能.docx

    本文将详细介绍如何利用JavaScript(简称JS)、jQuery(简称JQ)以及CSS来实现一个简易的下拉菜单功能。 #### 一、CSS基础实现 ##### HTML结构 首先,我们需要构建基本的HTML结构。以下是一个简单的示例: ```...

    全屏响应式的jQuery日历插件

    全屏响应式jQuery日历插件是Web开发中一种实用的工具,尤其在现代多设备兼容性需求日益增长的背景下,这种插件的重要性不言而喻。jQuery库因其易用性和丰富的功能,已经成为Web开发中不可或缺的部分,而这款基于...

    jQuery+CSS3响应式线条滑出图片列表

    在"jQuery+CSS3响应式线条滑出图片列表"中,网页布局会自动适应手机、平板电脑或桌面电脑等不同设备的屏幕大小,确保图片列表始终清晰、易读。 **线条滑出效果** 线条滑出效果通常是由CSS3的动画功能实现的。通过...

    jquery_Switch按钮插件

    **jQuery Switch 按钮插件详解** 在Web开发中,按钮组件是用户界面不可或缺的一部分,尤其是开关(Switch)按钮,...同时,HoneySwitch的灵活性和可扩展性使得它能适应各种设计需求,是现代Web开发中的一个实用工具。

    jquery 导出excel tableExport

    总的来说,`jquery 导出excel tableExport` 是一种使用 jQuery 和 tableExport 插件在前端实现 HTML 表格数据快速导出到 Excel 文件的方法,对于需要提供数据导出功能的网页应用非常实用。通过简单的配置和调用,...

    jquery实现faq问答展开折叠.rar

    `$(this).data('answer-id')`从问题元素中获取与之关联的答案ID,然后`$('#' + answerId).toggle();`用于切换相应答案的可见性。 五、CSS样式增强 为了视觉上的效果,我们可以添加一些CSS样式,例如折叠时隐藏答案...

    jquery+div实现同时滑动切换的图文展示特效插件下载.rar

    通过使用jQuery,开发者可以编写更简洁、更易读的代码,从而提高开发效率。在本插件中,jQuery被用来控制div元素的滑动动画,使得图文内容能够按照预设的方式进行平滑切换。 div元素在HTML中是一个非常基础但又灵活...

    jquery-week-calendar-master日历控件

    4. **事件重叠处理**:当事件发生时间重叠时,能智能调整显示,确保清晰易读。 5. **自定义样式**:可以通过CSS进行个性化定制,适应各种网站风格。 6. **数据绑定**:可与后端数据库进行交互,实现数据的动态加载和...

    jquery 可读取本地文件的号码选择器

    "jQuery 可读取本地文件的号码选择器"是一个实用的工具,它允许用户从本地文件系统选择号码文件,并在不丢失数据的情况下进行操作。这种功能尤其适用于那些需要大量输入或管理数据的场景,比如电话营销、客户管理等...

    jquery竖向动画菜单

    jQuery通过提供简洁的API,使得JavaScript代码更加易读和编写。例如,`$`符号是jQuery的简写,用于选择DOM元素,相当于JavaScript中的`document.querySelector`或`document.querySelectorAll`。通过这个选择器,我们...

    jqlite:使用系统SQLite构建的Janet SQLite模块

    这种方式允许Janet程序充分利用SQLite的高性能特性,同时保持代码的简洁性和易读性。 **总结** `jqlite`是Janet语言中的一个实用工具,它为SQLite数据库提供了一种便捷的访问方式。通过这个库,开发者可以轻松地在...

    jquery-markdown:在html上显示markdown的演示

    Markdown是一种轻量级的标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML(超文本标记语言)文档。在Web开发中,Markdown的使用非常广泛,尤其对于内容创作者和开发者来说,它提供了...

    jQuery实现Markdown编辑器插件特效代码

    总的来说,jQuery实现的Markdown编辑器插件是Web开发中的一个实用工具,尤其对于那些需要创建博客、文档或在线编辑平台的开发者来说,它提供了一种简单而高效的方式,让非技术用户也能轻松地进行格式化文本编辑。...

    timeago.js自动将时间戳转换为更易读的时间轴

    "timeago.js" 是一个非常实用的JavaScript库,它的主要功能是将Unix时间戳或日期对象自动转换为易于人类理解的相对时间描述。这个插件的设计理念在于提升用户体验,让用户在浏览网页时能够快速理解信息的时效性,而...

    javascript和jQuery实现网页实时聊天的ajax长轮询

    【JavaScript和jQuery实现网页实时聊天的Ajax长轮询】 ...针对这一问题,开发者们提出了多种解决方案,...然而,随着技术的发展,WebSocket等更先进的实时通信技术逐渐成为首选,但长轮询仍然在许多场景下具有实用性。

Global site tag (gtag.js) - Google Analytics