Nestable jQuery

2016/08/26 18:55 羅光男 JavaScript JQuery

Nestable.js

Nestable是jQuery的一個套件,作用是讓Html Tag<ol>底下的每個<li>可以進行拖曳的動作,也能在不同的<ol>之間進行拖曳。

 

作者連結:https://github.com/dbushell/Nestable

檔案下載:下載

 

參數說明:

group(選填) : 用來指定允許交互拖放插入的群組 預設值: 0  

maxDepth(選填) : 最多允許有幾個階層 預設值: 5  

threshold(選填) : 預設值: 20  

listNodeName(選填) : 要用來產生拖拉的元素 預設值: 'o1'  

itemNodeName(選填) : 要用來產生拖拉的元素項目 預設值: 'li'  

rootClass(選填) : 拖拉樣式的前綴 預設值: 'dd'  

listClass(選填) : 要用來產生拖拉的元素所套用的樣式 預設值: 'dd-list'  

itemClass(選填) : 要用來產生拖拉的元素項目所套用的樣式 預設值: 'dd-item'  

dragClass(選填) : 當元素被拖拉時所套用的樣式 預設值: 'dd-dragel'  

handleClass(選填) : 用來拖拉的控制項所套用的樣式 預設值: 'dd-handle'  

collapsedClass(選填) : 當元素項目有子元素可以展開時所套用的樣式 預設值: 'dd-collapsed'  

placeClass(選填) : 用來暫位用的元素所套用的樣式 預設值: 'dd-placeholder'  

emptyClass(選填) : 當元素中沒有任何可拖拉的元素項目時所套用的樣式 預設值: 'dd-empty'  

expandBtnHTML(選填) : 用來產生可以用來點擊展開用的按鈕 預設值: '<button data-action="expand" type="button">Expand</button>'  

collapseBtnHTML(選填) : 用來產生可以用來點擊收合用的按鈕 預設值: '<button data-action="collapse" type="button">Collapse</button>'

 

方法說明:

$(selector).nestable(params);

 將指定區塊中的元素轉換成可拖拉效果 

 

$(selector).nestable('serialize');

 取得指定區塊中的元素拖拉後的結構  

 

$(selector).nestable('expandAll');  

 展開指定區塊中的元素

 

$(selector).nestable('collapseAll');

收合指定區塊中的元素

 

事件說明

$(selector).on('change', fn);

當指定區塊中的元素的位置被改變時

 

HTML

<div class="dd" id="Nestable1">
    <ol class="dd-list">
        <li class="dd-item" data-id="1">
            <div class="dd-handle">Item 1</div>
        </li>
        <li class="dd-item" data-id="2">
            <div class="dd-handle">Item 2</div>
        </li>
        <li class="dd-item" data-id="3">
            <div class="dd-handle">Item 3</div>
            <ol class="dd-list">
                <li class="dd-item" data-id="4">
                    <div class="dd-handle">Item 4</div>
                </li>
                <li class="dd-item" data-id="5">
                    <div class="dd-handle">Item 5</div>
                </li>
            </ol>
        </li>
    </ol>
</div>

 

Nestable運作的js


        onSetNestable: function () {
            // activate Nestable for list 1
            $('#Applied').nestable({
                group: 0,
                maxDepth: 1
            })
                //.on('change', updateOutput);
            // activate Nestable for list 2
            $('#Qualified').nestable({
                group: 0,
                maxDepth: 1
            })
                //.on('change', updateOutput);

            // activate Nestable for list 3
            $('#Interviewed').nestable({
                group: 0,
                maxDepth: 1
            })
                //.on('change', updateOutput);

            // activate Nestable for list 4
            $('#Hired').nestable({
                group: 0,
                maxDepth: 1
            })
                //.on('change', updateOutput);

  
            // output initial serialised data
            updateOutput($('#Applied').data('output', $('#Applied-output')));
            updateOutput($('#Qualified').data('output', $('#Qualified-output')));
            updateOutput($('#Interviewed').data('output', $('#Interviewed-output')));
            updateOutput($('#Hired').data('output', $('#Hired-output')));
    
            
        },

 

        onNestableChange:function()
        {
            var model =
                {
                    state: [],
                    data:[]
                }

            $('.dd').on('change', function (e) {
                console.log(e);
                var list = e.length ? e : $(e.target),
                    output = list.data('output');
                if (window.JSON) {
                    output.val(window.JSON.stringify(list.nestable('serialize'))); //, null, 2));
                    model.state.push(e.target.id);
                    model.data.push(window.JSON.stringify(list.nestable('serialize')));
                    console.log(model);
                } else {
                    output.val('JSON browser support required for this demo.');
                }             
            });
        },

發表評論

此篇評論

暫無討論