预览效果

点击连线可以删除连线;可以将线连接到连线之上
左列表
  • c1
  • c2
  • c3x
  • c4
  • c5
  • c6
  • c7
  • c9
  • c10
  • c11
  • c12
右列表
  • p1
  • p2
  • c3
  • p4
  • p5
  • p6
  • p7
  • p8
  • p9
  • p10
  • p11
  • p12
上联
  • x
  • x
  • 大陆x
  • 山花x
  • 赤日x
下联
  • x
  • x
  • 长空x
  • 苍穹x
  • 海树x

答题连线

小学生都会的四则运算题
  • 1 + 1x
  • 2 * 4x
  • 19 - 7x
答案
  • 12x
  • 8x
  • 2x
历史题
  • 明太祖是谁?(问题来自电影《百变星君》)x
答案
  • A.朱元璋x
  • B.朱头皮x
  • xi.朱茵x
  • D.猪猪侠x

回调事件

调用方式

            
var obj2 = $("#aaa2").svgLine({
            //列表中选项的尺寸(支持sm、md、lg)
            size:'md',
            //皮肤,默认只支持green
            skin:'green',
            //左边列表标题
            headerLeft:'MODULE1',
            headerRight:'MODULE2',
            //选项中文名称的字段名
            name:'name',
            //选项的唯一标识的字段名,
            key:'key',
            //左边列表选项
            leftList:[
                {name:'天',key:'t',disable:true,icon:'fa fa-bandcamp'},{name:'雨',key:'y'},{name:'大陆',key:'dl'},{name:'山花',key:'sh'},{name:'赤日',key:'cr'}
                ],
            rightList: [
                {name:'地',key:'d'},{name:'风',key:'f'},{name:'长空',key:'ck'},{name:'苍穹',key:'cq'},{name:'海树',key:'hs'}
            ],
            //映射关系
            mapping:{'sh':'hs','cr':'cq','t':'d','y':'f','dl':'ck'},
            width:'600px',
            //选择映射时回调
            onSelect:function(l1,l2){
                appendMsg($("#msg"),"您连接了"+l1+"和"+l2);
            },
            //删除映射时回调
            onCancle:function(l1,l2){
                appendMsg($("#msg"),"您取消了"+l1+"和"+l2);
            },
        });
        //触发宽度重置
        obj2.resize(宽度);
        //获得数据
        alert(JSON.stringify(obj2.getData()));
        

svgLine方法的参数说明

参数名 含义 取值范围
headerLeft 左边列表标题 任意值(支持html)
headerRight 右边列表标题 任意值(支持html)
leftList 左列表选项 数组,数组中的每个元素是一个选项,每个选项都需要定义key和name属性
rightList 右列表选项 数组
mapping 初始连线关系 左列表key值和右列表key值得关系
width 控件外部宽度 px或者%
size 控件选项的高度 只支持sm、md或lg,默认为sm
skin 控件皮肤 默认为green,可进行自定义拓展
removAble 选项是否显示移除按钮 true或false,默认为true,可控制所有选项是否可以手动删除,优先级小于选项自身的removable属性

leftList和rightList选项的参数说明

参数名 含义 取值范围
key 选项唯一标识,同一侧列表中的key值不能重复 不能包含特殊字符,建议为字母数字或者下划线
name 选项显示的名称 可为任意值
icon 选项图标 图标的class名称,例如fa fa-plus
removable 是否可以移除选项,选项会显示删除按钮,优先级高于全局的removAble属性 true或者false,默认为true
disable 选项是否可选,当选项中包含disable属性且值为true时,该选项不可选中,且与这个选项相连的选项无法被取消 true或者false,默认为false

API

方法名称 方法说明 参数 返回值
getData() 获得当前连线关系数据 (空) return {左列表key1:右列表key1,左列表key2:右列表key2,...}
setData(map) 修改连线关系 映射关系:
map={左列表key1:右列表key1,左列表key2:右列表key2,...}
(空)
resize(w) 重置插件外部宽度 宽度值:100px、100%,w为空时等用于refresh()方法
示例:resize('100px')
(空)
refresh() 刷新插件视图 (空) (空)
addOptions(opt) 动态添加选项,对于列表中已存在的key值的选项,不会添加到列表中
opt={
    //左列表中要添加的选项
    leftList:[
             {name:'新选项',key:'k1'}
    ],
    //右列表中要添加的选项
    rightList:[
             {name:'新选项',key:'k2'}
    ]
}
(空)
deleteOptions(opt) 动态删除选项,若选项已经存在连线,连线也会被删除
opt={
    //左列表中要删除的选项
    leftList:['key1','key2',...],
    //右列表中要删除的选项
    rightList:['key1','key2',...]
}
(空)
getUl() 获得ul的jquery对象,返回的是$(dom)对象 (空)
return {
    left:左列表ul的$(dom)对象,
    right:右列表的ul的$(dom)对象
}

回调函数

函数名 触发条件 参数列表
onSelect(key1,key2) 连接两个选项时触发 key1:左列表选项的key
key2:右列表选项的key
onCancle(key1,key2) 取消两个选项时触发 key1:左列表选项的key
key2:右列表选项的key

拓展自定义皮肤样式

默认只支持green,可以在传入的skin参数中,添加自定义样式,假设skin值为"blue",需要先使用下面这段样式来声明"blue":
            
.lt-tr.blue .list-box ul>li:not(.active):not(.disabled):hover{
            background-color: #337ab7;color: white;border: none;box-shadow: 0 0 10px 0 #337ab7;
        }
        .lt-tr.blue .list-box ul>li.active:hover{
            background-color: #337ac7;color: white;border: none;box-shadow: 0 0 10px 0 #337ac7;
        }
        .lt-tr.blue .list-tool .list-tool-indiv>div>i{
            color:#337ab7!important;
        }
        .lt-tr.blue .list-box ul>li.active{
            background-color: #337ab7;color: white;
        }