vishalok12 / jquery-dragarrange

A Basic jQuery library to arrange/order DOM elements by dragging http://vishalok12.github.io/jquery-dragarrange/
MIT License
40 stars 18 forks source link

can add drag disable? #9

Closed sgf closed 6 years ago

sgf commented 6 years ago

arrangeable this is enable the drag system

how about add arrangedisable to disable the drag system

or add a flag to stop the drag system. like *begindrag() stopdrag() functions to begin and stop(or continue) draging

vishalok12 commented 6 years ago

Hi @sgf, It makes sense to add functionality to disable the drag for an element. I would suggest to create a disable function instead.

Like $('.draggable-element').disableArrangeable();

Also, can you raise pull request for that feature?

sgf commented 6 years ago

ok,i will try to do that.(but thats maybe need some time.im noob for js,aha)

sgf commented 6 years ago
$.fn.disableArrangeable = function(options) {
    var dragging = false;
    var $clone;
    var dragElement;
    var originalClientX, originalClientY; // client(X|Y) position before drag starts
    var $elements;                        // list of elements to shift between
    var touchDown = false;
    var leftOffset, topOffset;
    var eventNamespace;

    if (typeof options === "string") {
      // check if want to destroy drag-arrange
      if (options === 'destroy') {
        if (this.eq(0).data('drag-arrange-destroy')) {
          this.eq(0).data('drag-arrange-destroy')();
        }

        return this;
      }
    }

    options = $.extend({
      "dragEndEvent": "drag.end.arrangeable"
    }, options);

    var dragEndEvent = options["dragEndEvent"];

    $elements = this;
    eventNamespace = getOffEventNamespace();

    //the Event UnBind
      $elements.each(function() {
        // bindings to trigger drag on element
        var dragSelector = options.dragSelector;
        var $this = $(this);

        if (dragSelector) {
          $this.off(dragEvents.START + eventNamespace, dragSelector);
        } else {
          $this.off(dragEvents.START + eventNamespace);
        }
      });

      $(document).off(dragEvents.MOVE + eventNamespace)
        .off(dragEvents.END + eventNamespace);

      // remove data
      $elements.eq(0).data('drag-arrange-destroy', null);

      // clear variables
      $elements = null;
      // dragMoveHandler = null;
      // dragEndHandler = null;
  };

function getOffEventNamespace() {

    return '.drag-arrange-' + counter;
  }
sgf commented 6 years ago

added the code into the drag-arrange.js