背景
我创建了一个 jQuery 插件,该插件获取页面上的所有表并通过发出远程请求来加载行。
代码示例
这是一个简单的例子,它提高了插件使用的结构。在实际示例中,加载函数发出 AJAX 请求并处理结果,将行添加到表中。
JavaScript
(function($) {
$.table = function(el, options) {
// To avoid scope issues, use 'base' instead of 'this'
// to reference this class from internal events and functions.
var base = this;
// Access to jQuery and DOM versions of element
base.$el = $(el);
base.el = el;
base.load = function() {
base.$el.find('tbody:last').append("<tr><td>...</td><td>...</td></tr>");
};
base.load();
};
$.fn.table = function(options) {
options = options || {};
return this.find(options.selector)
.each(function(index) {
new $.table(this, options);
})
};
})(jQuery);;
HTML
<table id="table1" data-role="table">
<thead id="tour-table">
<tr>
<th data-id="id" width="20px">col1</th>
<th data-id="given_name">col2</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<table id="table2" data-role="table">
<thead id="tour-table">
<tr>
<th data-id="id" width="20px">col1</th>
<th data-id="given_name">col2</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
我像这样初始化页面上的所有表格。
$('body').table({selector:'[data-role="table"]'});
jsfiddle
你可以看到一个例子http://jsfiddle.net/RWy5r/1/
问题
是否可以将加载函数暴露给 dom,以便我可以像这样针对对象调用它?
$("#table1").load();
或者
$("#table1").table.load();
使用上面的简单示例,结果将是 ID 为“table1”的表将<td>
附加,而包括 ID 为“table2”的表在内的所有其他表将保持不变。