如何使这个jquery更易于重用
how to make this jquery more reusable?
我希望能够通过"骑手"或其他东西,并添加/删除做同样的事情,但对于其他项目以外的骑手,如子帐户。
$(function(){
var template = $('#riders-div .rider-new:first').clone(),
ridersCount = 0;
var addRider = function(){
ridersCount++;
var rider = template.clone().removeClass("dontshow").find(':input').each(function(){
var newId = this.id.replace('-', 's['+ ridersCount + '][') + ']';
$(this).prev().attr('for', newId); // update label for (assume prev sib is label)
this.name = this.id = newId; // update id and name (assume the same)
}).end() // back to .rider
.appendTo('#rider-exist'); // add to container
$('#rider-message').html('').removeClass("ui-state-highlight").removeClass("ui-state-error");
};
$('#addButton').click(addRider()); // attach event
$("#removeButton").click(function () {
$('#riders-div .rider-new:last').remove();
$('#rider-message').html('').removeClass("ui-state-highlight").removeClass("ui-state-error");
});
});
https://gist.github.com/1081078 您将需要从这段代码中创建一个插件。方法是,当你需要更多的功能,添加选项的插件。我启动了下面的插件。此外,替换元素id(等)的代码需要更加通用。下面我添加了一个正则表达式来替换元素id中的数字。
在必要的地方添加回调以执行特定的实现操作/UI调整。因此,在上面的示例中,添加代码以在after回调中重置消息html ($('#rider-message').html('')
)。
after: function(i){
$('#rider-message').html(''); //...
}
等等
$.fn.cloneForm = function(options){
var self = this, count = 0,
opts = $.extend({}, {
after: function(){},
template:'',
prependTo: '',
on: 'click'
}, options),
template = $(opts.template).clone(); // unmodified clone
self.bind(opts.on + '.cloneForm', function(){
count++;
template.clone().find(':input').each(function(){
var newId = this.id.replace(/[0-9]/i, count) // replace number
$(this).prev().attr('for', newId); // update label for
this.name = this.id = newId; // update id and name (assume the same)
}).end().prependTo(opts.prependTo);
opts.after.call(self, count); // run callback
});
}
用法:
$('#addButton').cloneForm({
template: '#riders-div .rider-new:first',
prependTo: '#riders-div',
after: function(){ console.log('im done'); }
});
似乎您正在为这个"Rider"模块定义某种管理系统(我不知道,只是我所看到的)。一开始我改进这段代码的方法是使用一些OO js。从这里开始,当需要使其更泛型时(例如更改类名),您可以将这些选择器作为构造函数的参数。它还有一个好处,那就是使代码更容易进行单元测试!
如果你想要一些具体的代码示例,我会张贴一些东西,只是让我知道。相关文章:
- 无法从jquery Mobile导航栏重定向到另一个页面
- 通过JQuery重定向到另一个页面
- 如何使用jQuery在最后重置脚本
- 如何使用外部Javascript库(如jQuery)重命名Google闭包样式表
- jQuery/JS获胜't在表单验证后重定向
- 使用jQuery重置文本,同时存在AJAX调用
- Javascript/jQuery重定向到页面
- 发送jquery-ajax$.post后重置连接
- Rails jQuery.提交后如何重置表单
- 在Jquery easyui中,多个选项卡提交按钮点击事件正在重定向到主页(第一个)选项卡
- 下拉菜单重定向使用AJAX和JQuery或Javascript
- 如何使用 JavaScript 或 Jquery 重定向页面
- jQuery 数据表 在页面上导航时,在分页表上重置行的数据
- jQuery onClick() IE 中的音效和重定向
- 重置按钮在 jQuery 中的单击状态
- jQuery Ajax 调用重定向到被调用的 URL 而不是相同的模板
- jQuery 在 onchange 期间重置单个表
- 在使用 jQuery Mobile 时在加载时重置 css
- jQuery移动显示页面5秒钟,然后重定向
- 如何在jQuery Form Validator中重置字段样式