JQuery UI Draggable插件使用說明文檔

JQuery UI Draggable插件用來使選中的元素能夠經過鼠標拖動.
Draggable的元素受css: ui-draggable影響, 拖動過程當中的css: ui-draggable-dragging.
若是須要的不只僅是拖, 而是一個完整的拖放功能, 請參閱JQuery UI 的Droppable插件, 該插件提供了一個draggable放的目標.

全部的回調函數(start, stop, drag等事件)接受兩個參數:
    event: 瀏覽器原生的事件
    ui: 一個JQuery的ui對象, 其中有如下主要屬性

    ui.helper: 正在拖動的元素的JQuery包裝對象, ui.helper.context能夠獲取到原生的DOM元素.
    ui.position: ui.helper(也就是咱們要拖動的元素)相對於父元素(包含本身的元素, 若是是頂層, 對應body)的偏移, 值是一個對象{top, left}----也就是能夠用ui.position.top獲取到該元素與父元素的top當前偏移
    ui.offset: 與ui.position贊成, 這裏表示的是和瀏覽器內容區域左上邊界的偏移(注意, 是內容區域, 而不是html的body區域.   html的body在默認狀況下, 各類瀏覽器中都會相對offset有偏移的.)

[選項]

1. addClasses:
    [類型]Boolean(布爾值)
    [默認值]true
    [產生影響]
        用來設置是否給draggable元素經過ui-draggable樣式才裝飾它. 主要爲了在經過.draggable()初始化不少(成百個)元素的時候優化性能考慮, 可是, 這個選項的設置, 不會影響ui-draggable-dragging樣式改變拖動過程樣式.
        true表示ui-draggable樣式被添加到該元素.
        false表示ui-draggable樣式不被添加到該元素.
    [代碼示例]draggable其餘選項的初始化, 獲取屬性值, 設置屬性值部分除有特殊功能, 再也不贅述, 僅粘貼代碼.
    [初始化]
        $('.selector').draggable({ addClasses: false });
        將.selector選擇器選中的元素渲染成爲一個可拖動控件, 不爲其添加ui-draggable樣式
    [獲取屬性值]
        var addClasses = $('#draggable').draggable('option', 'addClasses');
        獲取.selector選擇器選中的可拖動控件的addClasses選項的值.
    [設置屬性值]
        $('.selector').draggable('option', 'addClasses', false);
        將.selector選擇器選中的可拖動控件的addClasses選項值設置爲false.

2. appendTo:
    [類型]Element, Selector(HTML元素對象或選擇器)
    [默認值]'parent' 父元素
    [產生影響]
        用來指定控件在拖動過程當中ui.helper的容器, 默認狀況下, ui.helper使用和初始定義的draggable相同的容器, 也就是其父元素.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ appendTo: 'body' });
    [獲取屬性值]
        //getter
        var appendTo = $('.selector').draggable('option', 'appendTo');
    [設置屬性值]
        //setter
        $('.selector').draggable('option', 'appendTo', 'body');.

3. axis:
    [類型]String, Boolean(可取的值有'x', 'y', false)
        'x': 只能水平拖動
        'y': 只能垂直拖動
        false: 既能夠水平, 也能夠垂直拖動.
    [默認值]false, 不限制拖動的方向
    [產生影響]
        約束拖動過程當中的取向.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ axis: 'x' });
    [獲取屬性值]
        var axis = $('.selector').draggable('option', 'axis');
    [設置屬性值]
        $('.selector').draggable('option', 'axis', 'x');

4. cancel:
    [類型]選擇器
    [默認值]':input, option'
    [產生影響]
        經過選擇器指定這類元素不能被渲染成draggable控件.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ cancel: 'button' });
    [獲取屬性值]
        var cancel = $('.selector').draggable('option', 'cancel');
    [設置屬性值]
        $('.selector').draggable('option', 'cancel', 'button');

5. connectToSortable: 此選項須要和sortable聯合工做, 再議.
    [類型]選擇器
    [默認值]':input, option'
    [產生影響]
        經過選擇器指定這類元素不能被渲染成draggable控件.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ cancel: 'button' });
    [獲取屬性值]
        var cancel = $('.selector').draggable('option', 'cancel');
    [設置屬性值]
        $('.selector').draggable('option', 'cancel', 'button');

6. containment:
    [類型]選擇器, 元素, 字符串, 數組.
        選擇器: 只能在選擇器約束的元素內拖動
        元素: 只能在給定的元素內拖動
        字符串:
        parent: 只能在父容器內拖動
        document: 在當前html文檔的document下可拖動, 超出瀏覽器窗口範圍時, 自動出現滾動條
        widow: 只能在當前瀏覽器窗口的內容區域拖動, 拖動超出當前窗口範圍, 不會致使出現滾動條...
        數組: [x1, y1, x2, y2]以[開始水平座標, 開始垂直座標, 結束水平座標, 結束垂直座標]的方式劃定一個區域, 只能在此區域內拖動. 這種方式指定時, 值是相對當前瀏覽器窗口內容區域左上角的偏移值.
        false: 不限制拖動的活動範圍
    [默認值]false
    [產生影響]
        影響指定可拖動控件的活動區域.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ containment: 'parent' });
    [獲取屬性值]
        var containment = $('.selector').draggable('option', 'containment');
    [設置屬性值]
        $('.selector').draggable('option', 'containment', 'parent');

7. cursor:
    [類型]字符串.
    [默認值]'auto'
    [產生影響]
        影響指定可拖動控件在拖動過程當中的鼠標樣式, 該樣式設定以後, 須要控件的原始元素支持指定的cursor樣式, 若是指定的值原始元素不支持, 則使用原始元素默認的cursor樣式. 好比, $('input[type=button]').draggable({ cursor: 'crosshair' }); 因爲button不支持crosshair這個鼠標樣式, 因此, 會以默認形式顯示.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ cursor: 'crosshair' });
    [獲取屬性值]
        var cursor = $('.selector').draggable('option', 'cursor');
    [設置屬性值]
        $('.selector').draggable('option', 'cursor', 'crosshair');

8. cursorAt:
    [類型]對象
        經過設置對象的top, left, right, bottom的屬性值中的一個或兩個來肯定位置.
    [默認值]false
    [產生影響]
        在拖動控件的過程當中, 鼠標在控件上顯示的位置, 值爲false(默認)時, 從哪裏點擊開始拖動, 鼠標位置就在哪裏, 若是設置了, 就會在一個相對控件自身左上角偏移位置處, 好比: $('.selector').draggable('option', 'cursorAt', {left: 8, top: 8}); 那麼拖動過程當中, 鼠標就會在自身的左上角向下向右各偏移8像素處.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ cursor: 'crosshair' });
    [獲取屬性值]
        var cursor = $('.selector').draggable('option', 'cursor');
    [設置屬性值]
        $('.selector').draggable('option', 'cursor', 'crosshair');

9. delay:
    [類型]整數, 單位是毫秒
    [默認值]0
    [產生影響]
        可拖動控件從鼠標左鍵按下開始, 到拖動效果產生的延時. 該選項能夠被用來阻止一些不指望的點擊帶來的無效拖動. 具體效果是: 一次拖動, 從鼠標左鍵按下, 到delay指定的時間, 若是鼠標左鍵尚未鬆開, 那麼就認爲此次拖動有效, 不然, 認爲此次拖動無效.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ delay: 500 });
    [獲取屬性值]
        var delay = $('.selector').draggable('option', 'delay');
    [設置屬性值]
        $('.selector').draggable('option', 'delay', 500);

10. distance:
    [類型]整數, 單位是像素
    [默認值]1
    [產生影響]
        可拖動控件從鼠標左鍵按下開始, 到拖動效果產生的時鼠標必須產生的位移. 該選項能夠被用來阻止一些不指望的點擊帶來的無效拖動. 具體效果是: 一次拖動, 從鼠標左鍵按下, 只有當鼠標產生的位移達到distance指定的值時, 才認爲是有效的拖動.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ distance: 30 });
    [獲取屬性值]
        var distance = $('.selector').draggable('option', 'distance');
    [設置屬性值]
        $('.selector').draggable('option', 'distance', 30);

11. grid:
    [類型]數組[x, y], x表明水平大小, y表明垂直大小, 單位是像素
    [默認值]false
    [產生影響]
        可拖動控件拖動時採用grid的方式拖動, 也就是說拖動過程當中的單位是guid選項指定的數組描述的格子那麼大.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ grid: [50, 20] });
    [獲取屬性值]
        var grid = $('.selector').draggable('option', 'grid');
    [設置屬性值]
        $('.selector').draggable('option', 'grid', [50, 20]);

12. handle:
    [類型]選擇器或元素
    [默認值]false
    [產生影響]
        指定觸發拖動的元素. 用法: 將一個id=window的div設置爲可拖動控件, 設置它的handle是該div中的一個id=title的span, 那麼, 就只有在id=title的span上點擊拖動纔是有效的.   注意: 該元素必定要是可拖動控件的子元素.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ handle: 'h2' });
    [獲取屬性值]
        var handle = $('.selector').draggable('option', 'handle');
    [設置屬性值]
        $('.selector').draggable('option', 'handle', 'h2');

13. helper:
    [類型]字符串或函數
        字符串取值:
        'original': 可拖動控件自己移動
        'clone': 將可拖動控件自身克隆一個移動, 自身在原始位置不變
        函數則必須返回一個DOM元素: 以函數返回的DOM元素移動展示拖動的過程.
    [默認值]'original'
    [產生影響]
        拖動過程當中幫助用戶知道當前拖動位置的元素.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ helper: 'clone' });
    [獲取屬性值]
        var helper = $('.selector').draggable('option', 'helper');
    [設置屬性值]
        $('.selector').draggable('option', 'helper', 'clone');

14. iframeFix:
    [類型]布爾值或選擇器, 選擇器的選擇結果須要是iframe元素
    [默認值]false
    [產生影響]
        阻止拖動過程當中因爲鼠標指針在iframe區域移動, iframe對鼠標移動事件的默認響應.
        若是設置爲true, 將會阻止拖動過程當中當前頁面上全部的iframe的mousemove事件, 若是設置一個選擇器, 將會阻止指定的iframe的mousemove事件.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ iframeFix: true });
    [獲取屬性值]
        var iframeFix = $('.selector').draggable('option', 'iframeFix');
    [設置屬性值]
        $('.selector').draggable('option', 'iframeFix', true);

15. opacity:
    [類型]浮點數值
    [默認值]false
    [產生影響]
        拖動過程當中helper(拖動時跟隨鼠標移動的控件)的不透明度.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ opacity: 0.35 });
    [獲取屬性值]
        var opacity = $('.selector').draggable('option', 'opacity');
    [設置屬性值]
        $('.selector').draggable('option', 'opacity', 0.35);

16. refreshPositions:
    [類型]Boolean
    [默認值]false
    [產生影響]
        若是設置爲true, 全部的droppable位置會在每次mousemove事件中進行計算.
        注意: 該選項主要用於解決高級動態頁面展示問題. 慎用.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ refreshPositions: true });
    [獲取屬性值]
        var refreshPositions = $('.selector').draggable('option', 'refreshPositions');
    [設置屬性值]
        $('.selector').draggable('option', 'refreshPositions', true);

17. revert:
    [類型]Boolean, 字符串
    [默認值]false
    [產生影響]
        影響一次拖動以後是否迴歸到原始位置.
        true: 每次拖動中止以後, 元素自動回到原始位置
        'invalid': 除非是一個droppable而且被drop(放)成功了, 纔不將元素返回到原始位置.
        'valid': 除invalid以外的其餘狀況.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ revert: true });
    [獲取屬性值]
        var revert = $('.selector').draggable('option', 'revert');
    [設置屬性值]
        $('.selector').draggable('option', 'revert', true);

18. revertDuration:
    [類型]整數
    [默認值]500
    [產生影響]
        revert(迴歸到原始位置)整個過程須要的時間, 單位是毫秒. 若是設置revert選項設置爲false, 則忽略此屬性.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ revertDuration: 1000 });
    [獲取屬性值]
        var revertDuration = $('.selector').draggable('option', 'revertDuration');
    [設置屬性值]
        $('.selector').draggable('option', 'revertDuration', 1000);

19. scope:
    [類型]字符串
    [默認值]'default'
    [產生影響]
        該選項描述一個範圍, 和droppable的同名選項結合使用, droppable的accept選項用來設置能夠接受的draggable控件, 同時, 可接受的drggable控件受scope選項約束, 必須是同一個scope中的draggable和droppable才能夠互相拖放.
        例如:
        $('#draggable_a').draggable({scope: 'a'});
        $('#draggable_b').draggable({scope: 'b'});
        $('#droppable_a').droppable({scope: 'a'});
        $('#droppable_b').droppable({scope: 'b'});
        droppable控件的accept選項默認是'*', 看起來數draggable_a, draggable_b能夠自由的放入到droppable_a和droppable_b中, 可是, 因爲scope的約束, draggable_a只能放入到droppable_a, draggable_b只能髮乳到droppable_b中.
        注意: 這個選項就和變量的名稱空間的意義相似. 默認值是'default', 說明若是不指定, 你們都仍是有scope的, 名字是default而已.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ scope: 'tasks' });
    [獲取屬性值]
        var scope = $('.selector').draggable('option', 'scope');
    [設置屬性值]
        $('.selector').draggable('option', 'scope', 'tasks');

20. scroll:
    [類型]Boolean
    [默認值]true
    [產生影響]
        若是設置爲true, 在拖動過程當中超出可拖動控件容器的時候, 容器自動增長滾動條
    [代碼示例]
    [初始化]
        $('.selector').draggable({ scroll: false });
    [獲取屬性值]
        var scope = $('.selector').draggable('option', 'scope');
    [設置屬性值]
        $('.selector').draggable('option', 'scroll', false);

21. scrollSensitivity:
    [類型]整數值
    [默認值]20
    [產生影響]
        滾動條的敏感度.
        下面所屬的鼠標指針是指在draggable控件移動過程當中, 鼠標所處位置.
        鼠標指針和與draggable控件所在容器的邊距離爲多少的時候, 滾動條開始滾動.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ scrollSensitivity: 40 });
    [獲取屬性值]
        var scrollSensitivity = $('.selector').draggable('option', 'scrollSensitivity');
    [設置屬性值]
        $('.selector').draggable('option', 'scrollSensitivity', 40);

22. scrollSpeed:
    [類型]整數值
    [默認值]20
    [產生影響]
        因爲scrollSensitivity致使的滾動發生時, 滾動條一次滾動多少像素值.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ scrollSpeed: 40 });
    [獲取屬性值]
        var scrollSpeed = $('.selector').draggable('option', 'scrollSpeed');
    [設置屬性值]
        $('.selector').draggable('option', 'scrollSpeed', 40);

23. snap:
    [類型]Boolean, 選擇器
    [默認值]false
    [產生影響]
        吸附功能, 設置爲true等價與設置選擇器.ui-draggable, 具體效果是在選擇器指定的全部元素上, 當前的draggable控件均可以實現吸附功能, 吸附就是拖動過程當中, 靠近可是尚未捱上目標組件是, 自動的將正在拖動的組件吸過去.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ snap: true });
    [獲取屬性值]
        var snap = $('.selector').draggable('option', 'snap');
    [設置屬性值]
        $('.selector').draggable('option', 'snap', true);

24. snapMode:
    [類型]字符串, 可選值以下
        'inner': 在指定的元素內部能夠吸附
        'outer': 在指定元素外部能夠吸附
        'both': 裏面外面均可以吸附.
    [默認值]'both'
    [產生影響]
        設定吸附時候的模式.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ snapMode: 'outer' });
    [獲取屬性值]
        var snapMode = $('.selector').draggable('option', 'snapMode');
    [設置屬性值]
        $('.selector').draggable('option', 'snapMode', 'outer');

25. snapTolerance:
    [類型]整數
    [默認值]20
    [產生影響]
        設定離目標對象的邊多少像素的時候, 進行吸附.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ snap: true });
    [獲取屬性值]
        var snap = $('.selector').draggable('option', 'snap');
    [設置屬性值]
        $('.selector').draggable('option', 'snap', true);

26. stack:
    [類型]對象{group: '.selector', min: 50}
    [默認值]false
    [產生影響]
        一次初始化一組draggable控件的時候, 將其中的一些draggable控件以給定選擇器選擇, 做爲一組, 這時, 這一組draggable控件就能夠實現當前被拖動的始終在最前效果, min用來指定這一組的z-index值的最小值.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ stack: { group: 'products', min: 50 } });
    [獲取屬性值]
        var stack = $('.selector').draggable('option', 'stack');
    [設置屬性值]
        $('.selector').draggable('option', 'stack', { group: 'products', min: 50 });

27. zIndex:
    [類型]整數
    [默認值]false
    [產生影響]
        拖動時的helper(跟隨鼠標移動的控件)的z-index值. z-index就是css中的層疊層數, 數值越大, 越在上層.
    [代碼示例]
    [初始化]
        $('.selector').draggable({ zIndex: 2700 });
    [獲取屬性值]
        var zIndex = $('.selector').draggable('option', 'zIndex');
    [設置屬性值]
        $('.selector').draggable('option', 'zIndex', 2700);

[事件]

1. start: 拖動開始, 指鼠標按下, 開始移動.
    [類型]dragstart
    [回調函數接受的參數]
        event: 原生的瀏覽器事件.
        ui: JQuery的ui對象
        this: 當前拖動的控件DOM對象

2. drag: 拖動過程當中鼠標移動.
    [類型]drag
    [回調函數接受的參數]
        event: 原生的瀏覽器事件.
        ui: JQuery的ui對象
        this: 當前拖動的控件DOM對象

3. stop: 拖動結束.
    [類型]dragstop
    [回調函數接受的參數]
        event: 原生的瀏覽器事件.
        ui: JQuery的ui對象
        this: 當前拖動的控件DOM對象
    [代碼示例]
        初始化時設置事件.
        $('.selector').draggable({
        start: function(event, ui) { alert(this); },
        drag: function(event, ui) { alert(this); },
        stop: function(event, ui) { alert(this); }
        });
        動態的綁定事件. 動態綁定時候, 使用的事件名就是事件的類型.
        $(".selector").bind('dragstart', function(event, ui) {
        alert(this);
        });
        $(".selector").bind('drag', function(event, ui) {
        alert(this);
        });
        $(".selector").bind('dragstop', function(event, ui) {
        alert(this);
        });

[方法]

    1. destroy: 徹底移除一個可拖動控件, 使其回退到該元素被初始化成可拖動控件以前的狀態.
        [代碼示例]
            $(".selector").progressbar('destroy');
            將以前初始化的.selector指定的可拖動控件銷燬, 使其返回初始化以前的狀態.
    2. disable: 將可拖動控件樣式改變成爲失效, 與enable對應.
    3. enable: 將可拖動控件樣式改變爲容許, 與disable對應.
    4. option: 獲取或設置可拖動控件的選項, 第二個參數是選項名, 第三個參數是值. 若是不指定值, 就是獲取, 指定值, 就是設置.

[總結]
    addClasses: 用來設置是否添加ui-draggable樣式.
    appendTo: 設置追加到什麼地方
    axis: 設置拖動的方向
    cancel, handle: 設置控制整個控件拖動動做的區域, cancel指定區域不能拖動, handle指定區域控制控件拖動.
    connectToSortable: 須要和sortable集成.
    containment: 設置控件可拖動範圍
    cursor, cursorAt: 設置拖動過程當中, 鼠標的樣式及相對空間自身的位置.
    delay, distance: 設置拖動的延遲, delay設置延遲時間, distance設置延遲距離, 目的是防止誤點擊帶來的不指望拖動.
    grid: 設置拖動過程移動的單位(以小格的方式移動)
    helper: 設置拖動過程當中, 跟隨鼠標移動的組件.
    iframeFix: 解決拖動過程當中與iframe層疊後的事件問題.
    opacity: 拖動過程helper的不透明度.
    refreshPositions: 設置後drop過程當中, 鼠標每次移動都會計算位置.
    revert, revertDuration: 設置撤銷移動相關.
    scope: 設定draggable的域, 用來和droppable結合使用時肯定可放入的目標.
    scroll, scrollSensitivity, scrollSpeed: 設置拖動過程當中帶來的滾動條相關問題.
    snap, snapMode, snapTolerance: 設置吸附的相關屬性.
    stack, zIndex: 設置控件的層次.css

相關文章
相關標籤/搜索