自制Jquery树形选择插件.@H_502_2@
对付各种树形选择(省市,分类..)90行Jquery代码搞定,少说废话直接上插件代码。稍后介绍使用说明。是之前写的一个插件的精简版。
1.Jquery插件代码@H_502_2@
"
},path: root.attr("val") || 0,sChar: ',',change: function (v) { }
};
//参数合并
def = j.extend({},def,option);
//是否初始化
ispath() ? init() : create(def.str);
//请求<a href="/tag/fenlei/" target="_blank" class="keywords">分类</a>并选中
function create(id,o,v) {
if (!id || parseInt(id) == -1)
return o.nextAll().remove();
//创建select
var select = j("<select></select>").hide();
_b(select);
//<a href="/tag/tianjia/" target="_blank" class="keywords">添加</a>到容器内
if (o) o.nextAll().remove();
root.append(select);
//发起Ajax请求
j.ajax({
type: "GET",url: def.url,data: { id: id },dataType: "json",cache: true,success: function (json) {
datainit(select,json,v);
}
})
}
function datainit(select,data,v) {
_c(select,data).val(v || -1);
if (select.children("option").length <= 1) {
select.remove();
return;
}
else
select.removeAttr("style");
}
//判断是否符合格式
function ispath() {
return def.path && /^(\d{1,},)*\d{1,}$/.test(def.path) && def.path != '0,0';
}
//创建值
function _v() {
var v = new Array(),vtext = new Array();
v.push(0);
root.children("select").each(function () {
if (j(this).val() > 0) {
v.push(j(this).val());
vtext.push(j(this).children("option[selected]").text())
}
})
root.attr("val",v.join(','));
root.attr("vtext",vtext.join(">"));
def.change(v);
}
//初始化
function init() {
if (ispath()) {
var list = def.path.split(def.sChar);
for (var i in list) {
create(list[i],null,list[++i]);
}
return;
}
alert("Error:<a href="/tag/fenlei/" target="_blank" class="keywords">分类</a>出错!")
}
//绑定事件
function _b(select) {
select.bind("change",function () {
create(j(this).val(),j(this));
_v();
})
}
//创建下拉框
function _c(select,data) {
select.append(j("<option value='-1'>==请选择==</option>"));
for (var i = 0; i < data.length; i++) {
select.append(j(def.handel(data[i])));
}
return select;
}
}
})($)
},path: root.attr("val") || 0,sChar: ',',change: function (v) { }
};
//参数合并
def = j.extend({},def,option);
//是否初始化
ispath() ? init() : create(def.str);
//请求<a href="/tag/fenlei/" target="_blank" class="keywords">分类</a>并选中
function create(id,o,v) {
if (!id || parseInt(id) == -1)
return o.nextAll().remove();
//创建select
var select = j("<select></select>").hide();
_b(select);
//<a href="/tag/tianjia/" target="_blank" class="keywords">添加</a>到容器内
if (o) o.nextAll().remove();
root.append(select);
//发起Ajax请求
j.ajax({
type: "GET",url: def.url,data: { id: id },dataType: "json",cache: true,success: function (json) {
datainit(select,json,v);
}
})
}
function datainit(select,data,v) {
_c(select,data).val(v || -1);
if (select.children("option").length <= 1) {
select.remove();
return;
}
else
select.removeAttr("style");
}
//判断是否符合格式
function ispath() {
return def.path && /^(\d{1,},)*\d{1,}$/.test(def.path) && def.path != '0,0';
}
//创建值
function _v() {
var v = new Array(),vtext = new Array();
v.push(0);
root.children("select").each(function () {
if (j(this).val() > 0) {
v.push(j(this).val());
vtext.push(j(this).children("option[selected]").text())
}
})
root.attr("val",v.join(','));
root.attr("vtext",vtext.join(">"));
def.change(v);
}
//初始化
function init() {
if (ispath()) {
var list = def.path.split(def.sChar);
for (var i in list) {
create(list[i],null,list[++i]);
}
return;
}
alert("Error:<a href="/tag/fenlei/" target="_blank" class="keywords">分类</a>出错!")
}
//绑定事件
function _b(select) {
select.bind("change",function () {
create(j(this).val(),j(this));
_v();
})
}
//创建下拉框
function _c(select,data) {
select.append(j("<option value='-1'>==请选择==</option>"));
for (var i = 0; i < data.length; i++) {
select.append(j(def.handel(data[i])));
}
return select;
}
}
})($)
2.对付省市选择@H_502_2@
@H_502_2@