3kb jQuery代碼搞定各種樹形選擇的實現(xiàn)方法
自制Jquery樹形選擇插件.
對付各種樹形選擇(省市,分類..)90行Jquery代碼搞定,少說廢話直接上插件代碼。稍后介紹使用說明。是之前寫的一個插件的精簡版。
1.Jquery插件代碼
(function (j) {
j.fn.attrs = function (option) {
var root = this, data = [];
//默認參數(shù)
var def = { url: '/ajax/GetSort/', str: root.attr("str") || '0', handel: function (v) {
return "<option value=" + v.id + ">" + v.type + "</option>"
}, path: root.attr("val") || 0, sChar: ',', change: function (v) { }
};
//參數(shù)合并
def = j.extend({}, def, option);
//是否初始化
ispath() ? init() : create(def.str);
//請求分類并選中
function create(id, o, v) {
if (!id || parseInt(id) == -1)
return o.nextAll().remove();
//創(chuàng)建select
var select = j("<select></select>").hide();
_b(select);
//添加到容器內(nèi)
if (o) o.nextAll().remove();
root.append(select);
//發(fā)起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,0';
}
//創(chuàng)建值
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:分類出錯!")
}
//綁定事件
function _b(select) {
select.bind("change", function () {
create(j(this).val(), j(this));
_v();
})
}
//創(chuàng)建下拉框
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.對付省市選擇

3.對付各種讓你蛋疼的無限級選擇

4.如何使用
<div id="attr"></div>
<script type="text/javascript">
(function($){
$("#attr").attr(
{
url: '/ajax/GetSort/',//ajax 獲取的URL 服務(wù)器返回的是Json 數(shù)據(jù)
str: root.attr("str") || '0',//獲取初始化的分類path.例如:23,45,90。在編輯的情況下能正確還原
handel: function (v) {//數(shù)據(jù)處理的回調(diào)函數(shù),表明如何對后臺數(shù)據(jù)進行解析。 如[{id:32,type:"分類"}]
return "<option value=" + v.id + ">" + v.type + "</option>"
},
path: root.attr("val") || 0,
sChar: ',',//path 拆分的字符如果,path 為23|45|90 則 ‘|'
change: function (v) { }//選擇框修改處理事件
};
);
})(jQuery)
</script>
以上這篇3kb jQuery代碼搞定各種樹形選擇的實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
jquery中append()與appendto()用法分析
這篇文章主要介紹了jquery中append()與appendto()用法分析,以實例的形式分析了jquery中append()與appendto()的具體語法與詳細用法,需要的朋友可以參考下2014-11-11
jquery實現(xiàn)tab菜單切換內(nèi)容(精簡版demo)
這篇文章主要為大家介紹了jquery實現(xiàn)tab菜單切換內(nèi)容的精簡方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
jQuery 常見操作實現(xiàn)方式和常用函數(shù)方法總結(jié)
一個優(yōu)秀的 JavaScript 框架,一篇 jQuery 常用方法及函數(shù)的文章留存?zhèn)渫?/div> 2011-05-05
springmvc接收jquery提交的數(shù)組數(shù)據(jù)代碼分享
這篇文章主要介紹了springmvc接收jquery提交的數(shù)組數(shù)據(jù)代碼分享,還是比較不錯的,這里分享給大家,供需要的朋友參考。2017-10-10
jquery實現(xiàn)動畫菜單的左右滾動、漸變及圖形背景滾動等效果
這篇文章主要介紹了jquery實現(xiàn)動畫菜單的左右滾動、漸變及圖形背景滾動等效果,實例分析了jquery常用的幾種背景動態(tài)變換效果,涉及jquery動態(tài)操作頁面動畫效果實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08
jQuery on()綁定動態(tài)元素出現(xiàn)的問題小結(jié)
jQuery on()方法是官方推薦的綁定事件的一個方法。使用 on() 方法可以給將來動態(tài)創(chuàng)建的動態(tài)元素綁定指定的事件,通過本文給大家介紹jQuery on()綁定動態(tài)元素出現(xiàn)的問題小結(jié),需要的朋友參考下2016-02-02
基于MVC+EasyUI的web開發(fā)框架之使用云打印控件C-Lodop打印頁面或套打報關(guān)運單信息
這篇文章主要介紹了基于MVC+EasyUI的web開發(fā)框架之使用云打印控件C-Lodop打印頁面或套打報關(guān)運單信息的相關(guān)資料,非常不錯,需要的朋友可以參考下2016-08-08
jQuery validate+artdialog+jquery form實現(xiàn)彈出表單思路詳解
在項目需求中有這樣一功能:在頁面彈出一個form表單,ajax無刷新提交表單,表單需通過驗證。下面小編給大家介紹通過jQuery validate+artdialog+jquery form實現(xiàn)彈出表單思路詳解,需要的朋友參考下吧2016-04-04最新評論

