通过这两篇文章:
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列是有超链接,同时点击时弹出该值
分享到:
相关推荐
#### 八、插件开发技巧:闭包 - **目的**:保护内部状态不被外部访问,同时提供必要的接口。 - **实现**:在函数中定义另一个函数,并将必要的变量和函数封闭在这个内部函数的作用域内。 - **示例**: ```...
SSH(Struts2 + Spring + Hibernate)是一种常见的Java Web开发框架组合,用于构建高效、可扩展的Web应用程序。Struts2提供了MVC(Model-View-...JQuery插件的加入进一步提升了用户体验,使得开发过程更加便捷高效。
首先,让我们深入了解jQuery插件的开发。jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。开发jQuery插件旨在扩展其功能,使其更符合特定项目的需求。在这个案例中,该插件的...
本文将详细介绍一个由个人编写的jQuery Grid插件,它具备分页、排序、JSON传输以及记录渲染等功能,帮助开发者更便捷地处理复杂的表格数据。 首先,让我们来看看什么是jQuery Grid。jQuery Grid是基于jQuery的一个...
通过查看和学习这些文件,你可以更好地理解如何结合HTML、CSS和JavaScript来创建一个具有拖放功能的jQuery插件。 总之,jQuery插件“层拖动”是一个实用的交互功能,它利用jQuery的强大能力,使得开发者能够轻松地...
6. **兼容性**:作为一款成熟的jQuery插件,它应确保与主流浏览器的兼容性,包括Chrome、Firefox、Safari、Edge以及旧版的Internet Explorer。 7. **易于集成**:为了方便开发者快速集成到项目中,插件可能提供简单...
总结起来,这款jQuery带事件记录的多功能日历插件,以其高效的时间管理、精致的界面设计和灵活的可配置性,成为网页开发中的一个强大工具。它不仅让日历变得更加实用,还提升了用户的互动体验,对于那些需要进行日程...
**jQuery计算器插件详解** ...学习和理解这个插件的实现,将有助于你提升Web开发技能,尤其是交互式组件的设计和实现。通过不断的练习和实践,你可以创建更多符合自己需求的自定义插件,提升开发效率和用户体验。
jQuery的分页插件在网页开发中非常常见,它们能够帮助开发者轻松地处理大量数据的显示,通过分页的方式提高用户体验。"Page"是这样一个插件,它为开发者提供了简单的API来实现动态分页功能。下面我们将深入探讨...
在实际开发中,我们可以利用这个jQuery插件来构建更加动态和交互丰富的网站。例如,在电商应用中,用户可以在不刷新页面的情况下浏览商品详情,或者在社交网络中平滑地切换用户资料。这不仅提高了用户体验,也有助于...
**jQuery右下角弹出窗口插件** 在Web开发中,常常需要实现各种交互效果来提升用户体验,其中右下角弹出窗口是一个常见的需求。它通常用于显示通知、提示信息或者进行用户交互。"jQuery右下角弹出窗口插件"就是这样...
**jQuery的Autocomplete插件**是用于实现网页输入框自动补全功能的一种高效解决方案,它极大地提升了用户体验,尤其是在用户需要从大量数据中选择时。这个插件是基于jQuery库的,因此,首先需要确保在项目中引入了...
总结,jQuery颜色选择插件是前端开发中增强用户体验的一个实用工具,通过仿照Photoshop的颜色选择器,可以提供专业级别的颜色选取功能。通过学习和实践,开发者可以熟练掌握这一技术,提升网页应用的交互性与美观性...
在JavaScript的世界里,jQuery是一个广泛...在实际项目中,合理运用此插件能够显著提升表单相关功能的开发效率和用户体验。通过深入学习和实践,开发者可以更好地掌握这个插件,进而打造出更加动态、响应式的网页应用。
在分页场景中,jQuery插件可以提供友好的用户界面和动态效果。 `jPagination`是一款流行且易于使用的jQuery分页插件,它提供了多种自定义选项,如每页显示的记录数、样式、回调函数等,帮助开发者快速实现分页功能...
这款jQuery每日签到日历插件是一个高效且实用的工具,它简化了开发过程,让开发者能够快速构建带有签到功能的日历应用。通过与jQuery库的结合,插件提供了一套完整的解决方案,包括签到逻辑、数据存储、用户交互以及...
jQuery 分页插件是网页开发中的重要工具,它能够帮助开发者轻松实现数据的分页显示,提高用户体验,尤其是在处理大量数据时。这个插件通常包括各种样式和交互效果,使得分页不仅实用,而且美观。在本教程中,我们将...
**jQueryPager:基于JQuery的Ajax分页插件Pagination实现** 在Web开发中,当数据量庞大时,分页是一种常见的优化用户体验的方式。jQueryPager是一款轻量级的jQuery分页插件,它允许开发者通过Ajax无刷新的方式实现...
**jQuery 自定义可移动弹窗插件** 在网页开发中,弹窗是一种常见的交互元素,用于显示重要信息、用户确认操作或提供额外的功能区域。jQuery 是一个轻量级的 JavaScript 库,它简化了 DOM 操作、事件处理和动画等...
在提供的压缩包"jquery图片标注插件增强.zip"中,可能包含了改造后的jQuery插件源码、示例代码、测试图片和其他相关资源。解压后,你可以详细研究代码结构和实现方法,学习如何根据具体业务需求定制和扩展已有工具。...