在页面上导入jquery和此js 用法有两种: A. 在需要触发排序事件的元素上添加如下属性: 1. sort-sel 可选项,默认值为 "sort-sel" 2. update-sel 可选项, 默认为 "input" 3. update-attr 可选项, 默认为 "name" 4. group-order 可选项, 默认为 1 5. parent-sel 可选项, 默认为 "body" 然后在触发排序的事件方法里使用 $(this).reorder() 调用 B. 调用方法时传递参数 $(this).reorder({ "sort-sel":"sort-sel", "parent-sel" : "body", "update-sel" : "input", "update-attr" : "name", "group-order" : 1, "regex" : /\d+/g }) 参数用法示例: + 新增 调用的js: $("body").delegate(".num-add-big", "click", function(){ $(this).reorder(); }) 这个按钮点击时会触发排序: 对每一个".jytj-sort-parent", 按照顺序查找其内部的所有 ".jytj-sort" 对每一个".jytj-sort", 查找其内部所有的 ".jytj-sort-update" 更新其属性 name ("update-attr"默认值)的值, 替换第 1("group-order" 默认值) 个数字为此 ".jytj-sort" 的序号
(function ($) {
$.fn.reorder = function(option) {
var defaultOpt = {
"sort-sel":"sort-sel",
"parent-sel" : "body",
"update-sel" : "input",
"update-attr" : "name",
"group-order" : 1,
"regex" : /\d+/g
};
var opt = $.extend(defaultOpt,option);
var sortSel = $(this).attr("sort-sel") || opt["sort-sel"];
var parentSel = $(this).attr("parent-sel") || opt["parent-sel"];
var updateSel = $(this).attr("update-sel") || opt["update-sel"];
var updateAttr = $(this).attr("update-attr") || opt["update-attr"];
var order = parseInt($(this).attr("group-order")) || opt["group-order"];
var regex = $(this).attr("regex") || opt["regex"] ;
$(parentSel).each(function(parentNum, parentEle){
$(parentEle).find(sortSel).each(function(sortNum, sortEle) {
$(sortEle).find(updateSel).each(function(updateNum, updateEle) {
var oldAttr = $(updateEle).attr(updateAttr);
var count = 0;
$(updateEle).attr(updateAttr, oldAttr.replace(regex, function(arguments){count++;return count==order? sortNum:arguments[0]}));
})
});
});
return $(this);
}
})(jQuery);