本文转自:http://www.cnblogs.com/think8848/archive/2011/09/28/2193990.html

转载请注明作者(think8848)和出处(http://think8848.cnblogs.com)。未经作者同意,请勿擅自修改本文内容。

这两天项目中要用到类似于ListBox的功能了,本以为有很多jQuery插件,没有想到的是,居然没有搜到好用的,咋办呢,自已动手丰衣足食吧,于是花了一个晚上的时间做出来一个,上效果图:

该ListBox插件支持拖放,多选。

应用说明:

HTML:

<ul id="left"></ul>

Javascript:

$('#left').listbox({
    data: '/Data/Index?' + new Date().getTime(),
    width: 200,
    height: 300
});

默认选项说明:

Options:

  dnd: 是否支持拖放,默认false

  dndscope: 支持拖放时相关的作用域,举例来说,即,A ListBox和B ListBox的dndscope相同,则这两个ListBox中的元素是可以相互拖放的

  height: 地球人都知道,默认'auto'

  width: 火星人也知道了,默认'auto'

  data: 数据源,即可以是url也可以是对象数组,默认为[];

    无论是远程还是本地数据均有两种格式:

    1. {value: '', text: ''}

    2. ['', ''],在这种情况下,请将value置于第一个元素

  multiselect: 是否允许多选,默认false

  ajaxsettings: 如果需要从远程获取数据,这里定义了$.ajax的默认选项

    默认:

    type: 'GET'

    dataType: 'json'

    success: funtion(data){}

Events:

  2011.9.30 1.1版删除

  itemselected: ListBox中的元素选中的被触发;

    定义:function(data){},参数data为选中的元素数组

  2011.9.30 1.1版新增

  selectchange: ListBox中的元素选中项发生变化时被触发;

    定义:function(data){},参数data为选中的元素数组

Methods:

  addItem: 添加一个元素;

    定义:function(data){},其中data类型为{value: '', text: ''}或['', '']

    示例:    

$('#btnAddItem').click(function () {
    $('#left').listbox().addItem({ value: 3, text: 'c' });
});

  addRange: 添加元素数组;

    定义:function(data){},其中data类型为由{value: '', text: ''}或['', '']组成的数组

    示例:  

$('#btnAddRange').click(function () {
    $('#left').listbox().addRange([{ value: 4, text: 'd' }, ['5', 'e']]);
});

  clear: 清除所有元素

    定义: function(){}

    示例:

$('#btnClear').click(function () {
    $('#left').listbox().clear();
});

  getData: 获取与指定jQuery对象关联的数据

    定义:function(a){},参数a为ListBox元素的a标签,ListBox元素的DOM结构为<li><a></a></li>

    示例:

$('#btnGetData').click(function () {
    var a = $('#left a:first');
    if (a.size() > 0) {
        var data = $('#left').listbox().getData(a);
        alert("{value: '" + data.value + "', text: '" + data.text + "'}");
    }
});

  getDatas: 获取所有数据

    定义: function(){}

    示例:

$('#btnGetDatas').click(function () {
    alert($('#left').listbox().getDatas().length);
});

  getSelected: 获取所有选中的数据

    定义:function(){}

    示例:

$('#btnGetSelected').click(function () {
    alert($('#left').listbox().getSelected().length);
});

  2011.9.30 1.1版新增

  reload: 重新加载ListBox中的数据

    定义:function(data,ajaxsettings){},参数data,ajaxsettins定义同Options中同名属性data的定义

    示例:    

$('#btnReload').click(function () {
    $('#left').listbox().reload({ data: '/Data/Index', ajaxsettings: {
        data: { id: 'a' }
    }
    });
});

  removeItem: 删除指定value值的元素

    定义:function(data){},参数data可以为单个值,也可以为{value:''}对象

    示例:

$('#btnRemoveItem').click(function () {
    $('#left').listbox().removeItem({ value: 1 });
});

  removeRange: 删除指定value值数组的元素

    定义:function(data){},参数data为单个值,或{value:''}对象的数组

    示例:

$('#btnRemoveRange').click(function () {
    var datas = $('#left').listbox().getDatas();
    $('#left').listbox().removeRange(datas);
});

  setSelection: 选中指定value值的元素

    定义: function(value){},参数value为单个值

    示例:

$('#btnSetSelection').click(function () {
    $('#left').listbox().setSelection(1);
});

调用方法时,可以也可以使用$('#selector').listbox('methodName',arguments)方式,例:

$('#btnCallMethod').click(function () {
    var a = $('#left a:first');
    if (a.size() > 0) {
        var data = $('#left').listbox('getData', a);
        alert("{value: '" + data.value + "', text: '" + data.text + "'}");
    }
});

  

OK,至此我的需求基本满足了,就先这样吧,欢迎在试用过程中提交bug或者改进建议,谢了

源代码与示例下载(VS2010 ASP.NET MVC 3)

最新文章

  1. 【代码笔记】iOS-实现网络图片的异步加载和缓存
  2. Sqlserver 自定义表类型定义,使用,删除
  3. 让 ListView 在 Android 可回弹
  4. Myeclipse 找不到Convert to maven project选项
  5. R语言的前世今生(转)
  6. oracle的关闭过程(各个模式关闭)
  7. srcelement、parentElement
  8. HDU 4118 树形DP Holiday&#39;s Accommodation
  9. js获取手机屏幕宽度、高度
  10. HotSpot虚拟机对象相关内容
  11. Python全栈开发之路 【第十八篇】:Ajax技术
  12. 在cmd启动一个win32程序,printf把信息输出到启运它的那个CMD窗口
  13. Bootstrap模态框(一个页面显示多个)的使用
  14. BZOJ2648 SJY摆棋子(KD-Tree)
  15. React教程-初入
  16. excel如何设置自增序列
  17. 解决java.lang.OutOfMemoryError: unable to create new native thread问题
  18. ZOJ 3953 Intervals
  19. mybatis动态sql中的bind绑定
  20. Ansible 小手册系列 五(inventory 主机清单)

热门文章

  1. roadflow作为工作流引擎服务中心webapi说明
  2. uploadPreview 上传图片前预览 IE9 索引无效的问题
  3. HTTP调用接口方法
  4. 注意力机制(Attention Mechanism)应用——自然语言处理(NLP)
  5. jQuery操作标签--样式、文本、属性操作, 文档处理
  6. python中的循环和编码,运算符, 格式化输出
  7. opencv3.3 安装环境教程以及实现个图片读取功能
  8. 红与黑(DFS)
  9. 洛谷P2179 [NOI2012]骑行川藏(拉格朗日乘数法)
  10. django入门-自定义管理界面-part7