`
mj4d
  • 浏览: 302884 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jQuery插件开发学习的一些记录

阅读更多

通过这两篇文章:

http://www.cnblogs.com/fromearth/archive/2009/07/08/1519054.html

http://www.iteye.com/topic/545971

 

对jQuery插件的开发有了一个初步的认识,下面是自己在尝试写一个简单的插件过程中的一些问题的记录。

1、定义插件方法

(function($) {

	$.fn.scrolload = function(options) {
		debug("this is a plugin-method");
	};

	$.fn.renderHtml = function(datas, options) {

	};

	function debug(obj) {
		if (window.console && window.console.log) {
			window.console.log(obj);
		}
	}

})(jQuery);

如上,这里定义了两个插件方法。我们就可以通过实例化的jquery对象进行访问:

页面内容:

<input type="button" id="zbtn" value="确定" />

调用插件方法:

	$(function() {

		$("#zbtn").bind("click", function() {
			$(this).scrolload();
		});

	});

 我们可以在firebug下看到输出信息

 

2、私有方法

当然,在上面的例子中,多了一个函数debug,是在插件方法scrolload 中去调用,如果直接在实例的jquery对象中调用呢:

		$("#zbtn").bind("click", function() {
			$(this).debug("zz");
		});

这里error: $(this).debug is not a function 可见这里的debug就是该插件中的一个私有方法

 

 

3、参数合并

在插件开发中经常会有在调用函数时传入参数,以及方法本身会默认维护一套参数。需要在方法的运行中修改相应的设置。在jQuery中主要也是用extend的方法来合并参数,见

http://mj4d.iteye.com/blog/1569183

以下是renderHtml默认设置:

	$.fn.renderHtml = function(datas, options) {
		options = $.extend(true, $.fn.renderHtml.defaults, options);
		debug(options.name+" - "+options.age);
	};

	$.fn.renderHtml.defaults = {
		checkBox : false,
		age : 20
	};

 调用该方法:

		$("#zbtn").bind("click", function() {
			$(this).renderHtml("", {
				name : "aaa"
			});
		});
  

4、以下是自己写的一个简陋的将数据生产html代码的插件方法:

考虑传入的数据为json格式的数组,将传入的数据生产table内的元素,当然需要支持class。以及用户可回调生产自定义的html内容

	$.fn.renderHtml = function(datas, options) {

		options = $.extend(true, $.fn.renderHtml.defaults, options);
		var cl = options.columns;
		var result = "";

		if (datas && datas.constructor == Array) {
			for ( var i = 0, j = datas.length; i < j; i++) {
				data = datas[i];
				//
				var tr = "<tr>";
				for ( var n = 0, m = cl.length; n < m; n++) {
					// style:
					var tdStyle = "";
					tdStyle += "text-align:" + (cl[n].align || "center") + ";";
					if (cl[n].width) {
						tdStyle += "width:" + cl[n].width + ";";
					}
					tdStyle = "style:\"" + tdStyle + "\"";
					var td = "<td " + tdStyle + ">";

					// content
					if (cl[n].callBack && cl[n].callBack.constructor == Function) {
						td += cl[n].callBack.call(this, data[cl[n].dataIndex], data, i);
					} else {
						td += data[cl[n].dataIndex];
					}

					tr += td + "</td>";
				}
				tr += "</tr>";
				result += tr;
			}
		}
		return "<table>" + result + "</table>";

	};

	$.fn.renderHtml.defaults = {
		checkBox : false,
		age : 20
	};

 以下是调用的代码:

$(function() {

		var data = [ {
			"age" : 24,
			"name" : "robin",
			"desc" : "aa"
		}, {
			"age" : 23,
			"name" : "jack",
			"desc" : "bb"
		}, {
			"age" : 23,
			"name" : "rose",
			"desc" : "ccc"
		}, {
			"age" : 24,
			"name" : "shine",
			"desc" : "ddd"
		} ];

		$("#zbtn").bind("click", function() {
			$("#contentDiv").html($(this).renderHtml(data, {
				columns : [ {
					align : "center",
					width : "40px",
					dataIndex : 'age',
					//v:当前元素值、d:当前对象、i:序号
					callBack: function(v,d,i){
						return "<a href=\"javascript:alert('"+d.age+"')\">"+v+"</a>";
					}
				}, {
					width : "230px",
					dataIndex : 'name'
				}, {
					align : "right",
					width : "40px",
					dataIndex : 'desc'
				} ],
				age:23
			}))
		});

	});

 在生成的table中,age列是有超链接,同时点击时弹出该值

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    jquery插件编写指南

    #### 八、插件开发技巧:闭包 - **目的**:保护内部状态不被外部访问,同时提供必要的接口。 - **实现**:在函数中定义另一个函数,并将必要的变量和函数封闭在这个内部函数的作用域内。 - **示例**: ```...

    SSH+JQuery插件+Mysql

    SSH(Struts2 + Spring + Hibernate)是一种常见的Java Web开发框架组合,用于构建高效、可扩展的Web应用程序。Struts2提供了MVC(Model-View-...JQuery插件的加入进一步提升了用户体验,使得开发过程更加便捷高效。

    键盘式读卡设备web开发jquery插件

    首先,让我们深入了解jQuery插件的开发。jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。开发jQuery插件旨在扩展其功能,使其更符合特定项目的需求。在这个案例中,该插件的...

    jquery grid 插件

    本文将详细介绍一个由个人编写的jQuery Grid插件,它具备分页、排序、JSON传输以及记录渲染等功能,帮助开发者更便捷地处理复杂的表格数据。 首先,让我们来看看什么是jQuery Grid。jQuery Grid是基于jQuery的一个...

    Jquery插件 层拖动

    通过查看和学习这些文件,你可以更好地理解如何结合HTML、CSS和JavaScript来创建一个具有拖放功能的jQuery插件。 总之,jQuery插件“层拖动”是一个实用的交互功能,它利用jQuery的强大能力,使得开发者能够轻松地...

    jQuery城市级联插件

    6. **兼容性**:作为一款成熟的jQuery插件,它应确保与主流浏览器的兼容性,包括Chrome、Firefox、Safari、Edge以及旧版的Internet Explorer。 7. **易于集成**:为了方便开发者快速集成到项目中,插件可能提供简单...

    jQuery带事件记录的多功能日历

    总结起来,这款jQuery带事件记录的多功能日历插件,以其高效的时间管理、精致的界面设计和灵活的可配置性,成为网页开发中的一个强大工具。它不仅让日历变得更加实用,还提升了用户的互动体验,对于那些需要进行日程...

    简洁美观的jQuery计算器插件

    **jQuery计算器插件详解** ...学习和理解这个插件的实现,将有助于你提升Web开发技能,尤其是交互式组件的设计和实现。通过不断的练习和实践,你可以创建更多符合自己需求的自定义插件,提升开发效率和用户体验。

    jQuery的分页插件Page代码

    jQuery的分页插件在网页开发中非常常见,它们能够帮助开发者轻松地处理大量数据的显示,通过分页的方式提高用户体验。"Page"是这样一个插件,它为开发者提供了简单的API来实现动态分页功能。下面我们将深入探讨...

    自用jQuery插件,基于html5的history.pushState方法.zip

    在实际开发中,我们可以利用这个jQuery插件来构建更加动态和交互丰富的网站。例如,在电商应用中,用户可以在不刷新页面的情况下浏览商品详情,或者在社交网络中平滑地切换用户资料。这不仅提高了用户体验,也有助于...

    jquery右下角弹出窗口插件

    **jQuery右下角弹出窗口插件** 在Web开发中,常常需要实现各种交互效果来提升用户体验,其中右下角弹出窗口是一个常见的需求。它通常用于显示通知、提示信息或者进行用户交互。"jQuery右下角弹出窗口插件"就是这样...

    jquery的autocomplete(自动补全)插件

    **jQuery的Autocomplete插件**是用于实现网页输入框自动补全功能的一种高效解决方案,它极大地提升了用户体验,尤其是在用户需要从大量数据中选择时。这个插件是基于jQuery库的,因此,首先需要确保在项目中引入了...

    jquery颜色选择插件

    总结,jQuery颜色选择插件是前端开发中增强用户体验的一个实用工具,通过仿照Photoshop的颜色选择器,可以提供专业级别的颜色选取功能。通过学习和实践,开发者可以熟练掌握这一技术,提升网页应用的交互性与美观性...

    jQuery常用插件之表单插件form使用笔记

    在JavaScript的世界里,jQuery是一个广泛...在实际项目中,合理运用此插件能够显著提升表单相关功能的开发效率和用户体验。通过深入学习和实践,开发者可以更好地掌握这个插件,进而打造出更加动态、响应式的网页应用。

    jquery分页插件结合jsp实例

    在分页场景中,jQuery插件可以提供友好的用户界面和动态效果。 `jPagination`是一款流行且易于使用的jQuery分页插件,它提供了多种自定义选项,如每页显示的记录数、样式、回调函数等,帮助开发者快速实现分页功能...

    jquery每日签到日历插件

    这款jQuery每日签到日历插件是一个高效且实用的工具,它简化了开发过程,让开发者能够快速构建带有签到功能的日历应用。通过与jQuery库的结合,插件提供了一套完整的解决方案,包括签到逻辑、数据存储、用户交互以及...

    jQuery分页插件 很实用

    jQuery 分页插件是网页开发中的重要工具,它能够帮助开发者轻松实现数据的分页显示,提高用户体验,尤其是在处理大量数据时。这个插件通常包括各种样式和交互效果,使得分页不仅实用,而且美观。在本教程中,我们将...

    jQueryPager(JQuery分页插件pagination实现Ajax分页)

    **jQueryPager:基于JQuery的Ajax分页插件Pagination实现** 在Web开发中,当数据量庞大时,分页是一种常见的优化用户体验的方式。jQueryPager是一款轻量级的jQuery分页插件,它允许开发者通过Ajax无刷新的方式实现...

    Jquery 自定义可移动的插件弹窗

    **jQuery 自定义可移动弹窗插件** 在网页开发中,弹窗是一种常见的交互元素,用于显示重要信息、用户确认操作或提供额外的功能区域。jQuery 是一个轻量级的 JavaScript 库,它简化了 DOM 操作、事件处理和动画等...

    jquery图片标注插件增强.zip

    在提供的压缩包"jquery图片标注插件增强.zip"中,可能包含了改造后的jQuery插件源码、示例代码、测试图片和其他相关资源。解压后,你可以详细研究代码结构和实现方法,学习如何根据具体业务需求定制和扩展已有工具。...

Global site tag (gtag.js) - Google Analytics