刚写的一个无限级下拉菜单,供观赏。。。

Jose_Xu 2009-09-21 10:07:13

/*
* jquery select elements for xyy
*
* Copyright (c) 2009 xyy
*
* jquery.select 操作类
*
*/

(function(jQuery) {
jQuery.fn.extend({
/// <summary>
/// select项的长度
/// </summary>
/// <param name="size" type="select Element">
/// 1: size - 获取select Element对象项的长度
/// </param>
/// <returns type="int" />
size: function() {
return jQuery(this).get(0).options.length;
},
/// <summary>
/// getIndex索引
/// </summary>
/// <param name="getIndex" type="select Element">
/// 1: getIndex - 获取select Element对象当前选定项的索引
/// </param>
/// <returns type="int" />
getIndex: function() {
return jQuery(this).get(0).selectedIndex;
},
/// <summary>
/// getText文本值
/// </summary>
/// <param name="getText" type="select Element">
/// 1: getText - 获取select Element对象当前选定项的文本值
/// </param>
/// <returns type="String" />
getText: function() {
return jQuery(this).size() == 0 ?
null :
jQuery(this).get(0).options[this.getIndex()].text;
},
/// <summary>
/// getValue实际值
/// </summary>
/// <param name="getValue" type="select Element">
/// 1: getValue - 获取select Element对象当前选定项的实际值
/// </param>
/// <returns type="int" />
getValue: function() {
return jQuery(this).size() == 0 ?
null :
jQuery(this).val();
},
/// <summary>
/// setValue定位
/// </summary>
/// <param name="setValue" type="select Element">
/// 1: setValue - 定位select Element对象项值为当前的实际值
/// </param>
setValue: function(value) {
jQuery(this).get(0).value = value;
},
/// <summary>
/// setText定位
/// </summary>
/// <param name="setText" type="select Element">
/// 1: setText - 定位select Element对象项值为当前的文本值
/// </param>
setText: function(text) {
var len = jQuery(this).size();
for (var i = 0; i < len; i++) {
if (jQuery(this).get(0).options[i].text == text) {
jQuery(this).get(0).options[i].selected = true;
break;
}
}
},
/// <summary>
/// setIndex定位
/// </summary>
/// <param name="setIndex" type="select Element">
/// 1: setIndex - 定位select Element对象项值为当前的索引值
/// </param>
setIndex: function(index) {
var len = jQuery(this).size();
(index >= len || index < 0) ?
false :
jQuery(this).get(0).selectedIndex = index;
},
/// <summary>
/// isExist检测
/// </summary>
/// <param name="isExist" type="select Element">
/// 1: isExist - 检测select Element对象项值是否存在
/// </param>
/// <returns type="Boolean" />
isExist: function(value) {
var isExist = false;
var len = jQuery(this).size();
for (var i = 0; i < len; i++) {
if (jQuery(this).get(0).options[i].value == value) {
isExist = true;
break;
}
}
return isExist;
},
/// <summary>
/// addOptions添加项
/// </summary>
/// <param name="addOptions" type="select Element">
/// 1: addOptions - 添加select Element对象项
/// </param>
addOptions: function(text, value) {
!this.isExist(value) ?
jQuery(this).get(0).options.add(
new Option(text, value)
) :
false;
},
/// <summary>
/// removeItem删除项
/// </summary>
/// <param name="removeItem" type="select Element">
/// 1: removeItem - 删除select Element对象项
/// </param>
removeItem: function(value) {
if (jQuery(this).isExist(value)) {
var len = jQuery(this).size();
for (var i = 0; i < len; i++) {
if (jQuery(this).get(0).options[i].value == value) {
jQuery(this).get(0).remove(i);
break;
}
}
}
},
/// <summary>
/// removeIndex删除索引项
/// </summary>
/// <param name="removeIndex" type="select Element">
/// 1: removeIndex - 删除select Element对象索引项
/// </param>
removeIndex: function(index) {
var len = jQuery(this).size();
(index >= len || index < 0) ?
false :
jQuery(this).get(0).remove(index);
},
/// <summary>
/// removeSelected删除选中项
/// </summary>
/// <param name="removeSelected" type="select Element">
/// 1: removeSelected - 删除select Element对象选中项
/// </param>
removeSelected: function() {
var index = jQuery(this).getIndex();
this.removeIndex(index);
},
/// <summary>
/// clear删除所有项
/// </summary>
/// <param name="clear" type="select Element">
/// 1: clear - 删除select Element对象所有项
/// </param>
clear: function() {
jQuery(this).get(0).options.length = 0;
}
});
})(jQuery);


/*
* jquery select elements for xyy
*
* Copyright (c) 2009 xyy
*
* jquery.select.demo 无限下拉选项菜单
*
*/

(function(jQuery) {
jQuery.extend({
manageSelect: function(o) {
o = jQuery.extend({
Containers: '',
className: ''
}, o);
return new jQuery.SelectManager(o);
},
SelectManager: function(o) {
this.opt = o;
}
});
jQuery.extend(jQuery.SelectManager.prototype, {
add: function(o) {

var opt = this.opt, id = o.id, $id = '#' + o.id, $this = this;
jQuery(opt.Containers).append(
'<lable>{0}</lable><select id="{1}" class="{2}"></select>'
.format((o.title != undefined ? o.title : ''),
id,
opt.className
)
);

$this.addDefault($this, $($id));

$this.addOptions($($id), o.data);

if (typeof o.change === 'boolean' && o.change) {
var chObj = jQuery($id);
chObj.change(function() {
var val = chObj.val(),
text = chObj.getText(),
index = chObj.getIndex();

if (val == 0)
return;
else {
if (typeof o.changeUrl === 'string' &&
typeof o.changeUrl !== 'undefined') {
$this.ajaxData($this, o, val, text, index);
} else {
if (typeof o.callback === 'function')
o.callback(text, val, index);
}
}
});
}
},
addOptions: function(obj, data) {
if (typeof data === 'object')
for (var item in data)
obj.addOptions(data[item].filedText, data[item].filedValue);
},
ajaxData: function($this, o, val, text, index) {
var params = unescape(jQuery.param(o.changeData)).format(escape(val), escape(text));

jQuery.getJSON(o.changeUrl, params, function(data) {
if (typeof o.changeID !== 'undefined') {
var obj = jQuery('#' + o.changeID);
obj.clear();
$this.addDefault($this, obj);
$this.addOptions(obj, data);
}
if (typeof o.callback === 'function')
o.callback(text, val, index, data);
});
},
addDefault: function($this, $id) {
$this.addOptions($($id), [{ filedValue: 0, filedText: '请选择'}]);
}
});
jQuery.extend(String.prototype, {
format: function() {
if (arguments.length == 0)
return null;
var str = this;
for (var i = 0; i < arguments.length; i++) {
var re = new RegExp('\\{' + (i) + '\\}', 'gm');
str = str.replace(re, arguments[i]);
}
return str;
}
});
})(jQuery);

...全文
485 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝色_冰点 2009-09-25
  • 打赏
  • 举报
回复
借个地儿,发个右键菜单的示例,基于prototype.js
http://shice.heliohost.org/JsLib/Menu/DemoMenu.htm
[路在脚下] 2009-09-25
  • 打赏
  • 举报
回复
楼主,能不能给个地址给我们看看效果啊
Jose_Xu 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 jaguar_yang 的回复:]
跑不通,obj.addOptions(data[item].filedText, data[item].filedValue);Js错误,改为Jquery支持的ADD方法后又有别人的错误。
[/Quote]

select没有addOptions方法,这是扩展出来的
Jose_Xu 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 jaguar_yang 的回复:]
跑不通,obj.addOptions(data[item].filedText, data[item].filedValue);Js错误,改为Jquery支持的ADD方法后又有别人的错误。
[/Quote]

因为你没加最上面的那个扩展类。。。
iabswfg858 2009-09-24
  • 打赏
  • 举报
回复
试试
jaguar_yang 2009-09-24
  • 打赏
  • 举报
回复
跑不通,obj.addOptions(data[item].filedText, data[item].filedValue);Js错误,改为Jquery支持的ADD方法后又有别人的错误。
wxg22526451 2009-09-24
  • 打赏
  • 举报
回复
学习
wtcsy 2009-09-24
  • 打赏
  • 举报
回复
那个叫蜈蚣吧............
24K純帥 2009-09-24
  • 打赏
  • 举报
回复
学习。。蜘蛛看着我有点发毛
jaychou_lu 2009-09-22
  • 打赏
  • 举报
回复
学习了
灬上海爽爷 2009-09-22
  • 打赏
  • 举报
回复
.net的东西吗?
zhongwei11 2009-09-22
  • 打赏
  • 举报
回复
学习~!~学习~~
virus7581 2009-09-22
  • 打赏
  • 举报
回复
up
jamix 2009-09-22
  • 打赏
  • 举报
回复
顶一个
做个记号
ya270078781 2009-09-22
  • 打赏
  • 举报
回复
支持一下..
Jose_Xu 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tcwsyt 的回复:]
.net的东西吗?
[/Quote]

不管JAVA ASP PHP还是.NET 都能用, 主要是AJAX JS处理方面,后台逻辑 自己构造就可以了。

道理一样
loveshuang942 2009-09-22
  • 打赏
  • 举报
回复
帮顶 ,JQUERY的树 ,好像GOOGLE开发的JSTREE不错.
长公子冰 2009-09-22
  • 打赏
  • 举报
回复
看不到效果,纯支持。。。
z1g2w3i4 2009-09-22
  • 打赏
  • 举报
回复
mbh0210 2009-09-22
  • 打赏
  • 举报
回复
恩,做个标记
加载更多回复(10)

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧