亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dragdrop.js

?? grails用戶使用指南
?? JS
?? 第 1 頁 / 共 2 頁
字號:
        }      }    } else {      this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000;      this.options.scroll.scrollTop  += this.scrollSpeed[1] * delta / 1000;    }        Position.prepare();    Droppables.show(Draggables._lastPointer, this.element);    Draggables.notify('onDrag', this);    Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);    Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;    Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;    if (Draggables._lastScrollPointer[0] < 0)      Draggables._lastScrollPointer[0] = 0;    if (Draggables._lastScrollPointer[1] < 0)      Draggables._lastScrollPointer[1] = 0;    this.draw(Draggables._lastScrollPointer);        if(this.options.change) this.options.change(this);  },    _getWindowScroll: function(w) {    var T, L, W, H;    with (w.document) {      if (w.document.documentElement && documentElement.scrollTop) {        T = documentElement.scrollTop;        L = documentElement.scrollLeft;      } else if (w.document.body) {        T = body.scrollTop;        L = body.scrollLeft;      }      if (w.innerWidth) {        W = w.innerWidth;        H = w.innerHeight;      } else if (w.document.documentElement && documentElement.clientWidth) {        W = documentElement.clientWidth;        H = documentElement.clientHeight;      } else {        W = body.offsetWidth;        H = body.offsetHeight      }    }    return { top: T, left: L, width: W, height: H };  }}/*--------------------------------------------------------------------------*/var SortableObserver = Class.create();SortableObserver.prototype = {  initialize: function(element, observer) {    this.element   = $(element);    this.observer  = observer;    this.lastValue = Sortable.serialize(this.element);  },    onStart: function() {    this.lastValue = Sortable.serialize(this.element);  },    onEnd: function() {    Sortable.unmark();    if(this.lastValue != Sortable.serialize(this.element))      this.observer(this.element)  }}var Sortable = {  sortables: {},    _findRootElement: function(element) {    while (element.tagName != "BODY") {        if(element.id && Sortable.sortables[element.id]) return element;      element = element.parentNode;    }  },  options: function(element) {    element = Sortable._findRootElement($(element));    if(!element) return;    return Sortable.sortables[element.id];  },    destroy: function(element){    var s = Sortable.options(element);        if(s) {      Draggables.removeObserver(s.element);      s.droppables.each(function(d){ Droppables.remove(d) });      s.draggables.invoke('destroy');            delete Sortable.sortables[s.element.id];    }  },  create: function(element) {    element = $(element);    var options = Object.extend({       element:     element,      tag:         'li',       // assumes li children, override with tag: 'tagname'      dropOnEmpty: false,      tree:        false,      treeTag:     'ul',      overlap:     'vertical', // one of 'vertical', 'horizontal'      constraint:  'vertical', // one of 'vertical', 'horizontal', false      containment: element,    // also takes array of elements (or id's); or false      handle:      false,      // or a CSS class      only:        false,      hoverclass:  null,      ghosting:    false,      scroll:      false,      scrollSensitivity: 20,      scrollSpeed: 15,      format:      /^[^_]*_(.*)$/,      onChange:    Prototype.emptyFunction,      onUpdate:    Prototype.emptyFunction    }, arguments[1] || {});    // clear any old sortable with same element    this.destroy(element);    // build options for the draggables    var options_for_draggable = {      revert:      true,      scroll:      options.scroll,      scrollSpeed: options.scrollSpeed,      scrollSensitivity: options.scrollSensitivity,      ghosting:    options.ghosting,      constraint:  options.constraint,      handle:      options.handle };    if(options.starteffect)      options_for_draggable.starteffect = options.starteffect;    if(options.reverteffect)      options_for_draggable.reverteffect = options.reverteffect;    else      if(options.ghosting) options_for_draggable.reverteffect = function(element) {        element.style.top  = 0;        element.style.left = 0;      };    if(options.endeffect)      options_for_draggable.endeffect = options.endeffect;    if(options.zindex)      options_for_draggable.zindex = options.zindex;    // build options for the droppables      var options_for_droppable = {      overlap:     options.overlap,      containment: options.containment,      tree:        options.tree,      hoverclass:  options.hoverclass,      onHover:     Sortable.onHover      //greedy:      !options.dropOnEmpty    }        var options_for_tree = {      onHover:      Sortable.onEmptyHover,      overlap:      options.overlap,      containment:  options.containment,      hoverclass:   options.hoverclass    }    // fix for gecko engine    Element.cleanWhitespace(element);     options.draggables = [];    options.droppables = [];    // drop on empty handling    if(options.dropOnEmpty || options.tree) {      Droppables.add(element, options_for_tree);      options.droppables.push(element);    }    (this.findElements(element, options) || []).each( function(e) {      // handles are per-draggable      var handle = options.handle ?         Element.childrenWithClassName(e, options.handle)[0] : e;          options.draggables.push(        new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));      Droppables.add(e, options_for_droppable);      if(options.tree) e.treeNode = element;      options.droppables.push(e);          });        if(options.tree) {      (Sortable.findTreeElements(element, options) || []).each( function(e) {        Droppables.add(e, options_for_tree);        e.treeNode = element;        options.droppables.push(e);      });    }    // keep reference    this.sortables[element.id] = options;    // for onupdate    Draggables.addObserver(new SortableObserver(element, options.onUpdate));  },  // return all suitable-for-sortable elements in a guaranteed order  findElements: function(element, options) {    return Element.findChildren(      element, options.only, options.tree ? true : false, options.tag);  },    findTreeElements: function(element, options) {    return Element.findChildren(      element, options.only, options.tree ? true : false, options.treeTag);  },  onHover: function(element, dropon, overlap) {    if(Element.isParent(dropon, element)) return;    if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {      return;    } else if(overlap>0.5) {      Sortable.mark(dropon, 'before');      if(dropon.previousSibling != element) {        var oldParentNode = element.parentNode;        element.style.visibility = "hidden"; // fix gecko rendering        dropon.parentNode.insertBefore(element, dropon);        if(dropon.parentNode!=oldParentNode)           Sortable.options(oldParentNode).onChange(element);        Sortable.options(dropon.parentNode).onChange(element);      }    } else {      Sortable.mark(dropon, 'after');      var nextElement = dropon.nextSibling || null;      if(nextElement != element) {        var oldParentNode = element.parentNode;        element.style.visibility = "hidden"; // fix gecko rendering        dropon.parentNode.insertBefore(element, nextElement);        if(dropon.parentNode!=oldParentNode)           Sortable.options(oldParentNode).onChange(element);        Sortable.options(dropon.parentNode).onChange(element);      }    }  },    onEmptyHover: function(element, dropon, overlap) {    var oldParentNode = element.parentNode;    var droponOptions = Sortable.options(dropon);            if(!Element.isParent(dropon, element)) {      var index;            var children = Sortable.findElements(dropon, {tag: droponOptions.tag});      var child = null;                  if(children) {        var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap);                for (index = 0; index < children.length; index += 1) {          if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) {            offset -= Element.offsetSize (children[index], droponOptions.overlap);          } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) {            child = index + 1 < children.length ? children[index + 1] : null;            break;          } else {            child = children[index];            break;          }        }      }            dropon.insertBefore(element, child);            Sortable.options(oldParentNode).onChange(element);      droponOptions.onChange(element);    }  },  unmark: function() {    if(Sortable._marker) Element.hide(Sortable._marker);  },  mark: function(dropon, position) {    // mark on ghosting only    var sortable = Sortable.options(dropon.parentNode);    if(sortable && !sortable.ghosting) return;     if(!Sortable._marker) {      Sortable._marker = $('dropmarker') || document.createElement('DIV');      Element.hide(Sortable._marker);      Element.addClassName(Sortable._marker, 'dropmarker');      Sortable._marker.style.position = 'absolute';      document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);    }        var offsets = Position.cumulativeOffset(dropon);    Sortable._marker.style.left = offsets[0] + 'px';    Sortable._marker.style.top = offsets[1] + 'px';        if(position=='after')      if(sortable.overlap == 'horizontal')         Sortable._marker.style.left = (offsets[0]+dropon.clientWidth) + 'px';      else        Sortable._marker.style.top = (offsets[1]+dropon.clientHeight) + 'px';        Element.show(Sortable._marker);  },    _tree: function(element, options, parent) {    var children = Sortable.findElements(element, options) || [];      for (var i = 0; i < children.length; ++i) {      var match = children[i].id.match(options.format);      if (!match) continue;            var child = {        id: encodeURIComponent(match ? match[1] : null),        element: element,        parent: parent,        children: new Array,        position: parent.children.length,        container: Sortable._findChildrenElement(children[i], options.treeTag.toUpperCase())      }            /* Get the element containing the children and recurse over it */      if (child.container)        this._tree(child.container, options, child)            parent.children.push (child);    }    return parent;   },  /* Finds the first element of the given tag type within a parent element.    Used for finding the first LI[ST] within a L[IST]I[TEM].*/  _findChildrenElement: function (element, containerTag) {    if (element && element.hasChildNodes)      for (var i = 0; i < element.childNodes.length; ++i)        if (element.childNodes[i].tagName == containerTag)          return element.childNodes[i];      return null;  },  tree: function(element) {    element = $(element);    var sortableOptions = this.options(element);    var options = Object.extend({      tag: sortableOptions.tag,      treeTag: sortableOptions.treeTag,      only: sortableOptions.only,      name: element.id,      format: sortableOptions.format    }, arguments[1] || {});        var root = {      id: null,      parent: null,      children: new Array,      container: element,      position: 0    }        return Sortable._tree (element, options, root);  },  /* Construct a [i] index for a particular node */  _constructIndex: function(node) {    var index = '';    do {      if (node.id) index = '[' + node.position + ']' + index;    } while ((node = node.parent) != null);    return index;  },  sequence: function(element) {    element = $(element);    var options = Object.extend(this.options(element), arguments[1] || {});        return $(this.findElements(element, options) || []).map( function(item) {      return item.id.match(options.format) ? item.id.match(options.format)[1] : '';    });  },  setSequence: function(element, new_sequence) {    element = $(element);    var options = Object.extend(this.options(element), arguments[2] || {});        var nodeMap = {};    this.findElements(element, options).each( function(n) {        if (n.id.match(options.format))            nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode];        n.parentNode.removeChild(n);    });       new_sequence.each(function(ident) {      var n = nodeMap[ident];      if (n) {        n[1].appendChild(n[0]);        delete nodeMap[ident];      }    });  },    serialize: function(element) {    element = $(element);    var options = Object.extend(Sortable.options(element), arguments[1] || {});    var name = encodeURIComponent(      (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);        if (options.tree) {      return Sortable.tree(element, arguments[1]).children.map( function (item) {        return [name + Sortable._constructIndex(item) + "=" +                 encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));      }).flatten().join('&');    } else {      return Sortable.sequence(element, arguments[1]).map( function(item) {        return name + "[]=" + encodeURIComponent(item);      }).join('&');    }  }}/* Returns true if child is contained within element */Element.isParent = function(child, element) {  if (!child.parentNode || child == element) return false;  if (child.parentNode == element) return true;  return Element.isParent(child.parentNode, element);}Element.findChildren = function(element, only, recursive, tagName) {      if(!element.hasChildNodes()) return null;  tagName = tagName.toUpperCase();  if(only) only = [only].flatten();  var elements = [];  $A(element.childNodes).each( function(e) {    if(e.tagName && e.tagName.toUpperCase()==tagName &&      (!only || (Element.classNames(e).detect(function(v) { return only.include(v) }))))        elements.push(e);    if(recursive) {      var grandchildren = Element.findChildren(e, only, recursive, tagName);      if(grandchildren) elements.push(grandchildren);    }  });  return (elements.length>0 ? elements.flatten() : []);}Element.offsetSize = function (element, type) {  if (type == 'vertical' || type == 'height')    return element.offsetHeight;  else    return element.offsetWidth;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青国产91久久久久久 | 国产视频一区在线观看| 色综合久久六月婷婷中文字幕| 蓝色福利精品导航| 精品一区二区三区av| 久久精品二区亚洲w码| 免费人成精品欧美精品| 日本va欧美va欧美va精品| 轻轻草成人在线| 国产在线精品免费| 99久久国产综合精品女不卡| jlzzjlzz欧美大全| 欧美亚洲愉拍一区二区| 欧美精品亚洲二区| 精品美女被调教视频大全网站| 久久综合狠狠综合久久综合88| 久久蜜桃一区二区| 国产精品免费久久| 亚洲综合激情小说| 毛片av一区二区| 成人一道本在线| 欧美日韩综合色| 亚洲精品一区二区三区香蕉| 精品一二三四在线| 久久99精品网久久| 99久久久久久| 欧美精品九九99久久| 精品国产凹凸成av人导航| 中文字幕第一区二区| 亚洲天堂2014| 午夜电影网亚洲视频| 国产真实精品久久二三区| av成人免费在线| 欧美日韩成人在线一区| 精品美女被调教视频大全网站| 国产精品毛片久久久久久| 亚洲国产精品嫩草影院| 高清免费成人av| 欧美一级黄色录像| 亚洲丝袜另类动漫二区| 美女精品一区二区| 99久精品国产| 欧美刺激脚交jootjob| 亚洲人快播电影网| 精品在线播放午夜| 欧美精品在线观看一区二区| 中文字幕一区二区三区四区不卡| 日韩电影在线一区二区| 99精品国产热久久91蜜凸| 精品日韩成人av| 亚洲h动漫在线| 91亚洲精品久久久蜜桃| 2014亚洲片线观看视频免费| 亚洲国产精品一区二区www在线| 国产不卡视频在线观看| 欧美一区二区成人| 亚洲一区二区五区| 97久久人人超碰| 久久精品夜色噜噜亚洲aⅴ| 日韩成人一区二区| 欧美专区日韩专区| 1000精品久久久久久久久| 狠狠久久亚洲欧美| 欧美大片在线观看一区| 婷婷国产在线综合| 在线观看91视频| 亚洲精品久久嫩草网站秘色| 成人精品免费看| 中文字幕欧美三区| 国产大片一区二区| 久久九九99视频| 国产一区二区网址| 久久综合国产精品| 国产一区二区三区观看| 精品毛片乱码1区2区3区| 精品一区二区三区日韩| 欧美一区二区三区公司| 日韩精品91亚洲二区在线观看| 色婷婷av一区二区三区大白胸| 亚洲欧洲av一区二区三区久久| 国产98色在线|日韩| 国产日韩亚洲欧美综合| 福利电影一区二区| 中文字幕不卡在线播放| 成av人片一区二区| 亚洲乱码精品一二三四区日韩在线| www.久久精品| 亚洲人成7777| 欧美日韩国产高清一区二区三区 | 国产精品影视在线| 国产亚洲女人久久久久毛片| 国产精品一品二品| 日本一区二区免费在线| 成人免费看黄yyy456| 日韩一区中文字幕| 91久久精品午夜一区二区| 亚洲福利一二三区| 精品日本一线二线三线不卡| 国产呦萝稀缺另类资源| 中文字幕免费不卡在线| 一本色道久久综合精品竹菊| 亚洲成a人v欧美综合天堂| 欧美丰满嫩嫩电影| 国产成人在线影院| 亚洲欧美在线另类| 制服视频三区第一页精品| 国产很黄免费观看久久| 一区二区成人在线观看| 欧美一区二区三区不卡| 国产精品中文有码| 亚洲成av人片| 久久精品夜色噜噜亚洲aⅴ| 色狠狠av一区二区三区| 精品一区二区免费看| 综合久久一区二区三区| 日韩欧美一区中文| av中文一区二区三区| 日韩高清中文字幕一区| 亚洲欧美在线视频观看| 日韩午夜三级在线| 色诱视频网站一区| 国内偷窥港台综合视频在线播放| 最新日韩av在线| 精品国产99国产精品| 91福利精品第一导航| 国产精品一区二区男女羞羞无遮挡| 一卡二卡欧美日韩| 国产目拍亚洲精品99久久精品| 91福利视频久久久久| 成人久久久精品乱码一区二区三区| 日韩精品成人一区二区三区| 亚洲三级电影网站| 国产亚洲精品精华液| 91精品国产综合久久精品app| 成人av网站大全| 国产一区欧美一区| 蜜臀av性久久久久蜜臀aⅴ| 亚洲在线视频一区| 亚洲色图都市小说| 中文字幕+乱码+中文字幕一区| 日韩欧美一区二区三区在线| 欧美性大战xxxxx久久久| jvid福利写真一区二区三区| 国产成人综合在线播放| 精品中文字幕一区二区| 另类专区欧美蜜桃臀第一页| 日韩av一区二区在线影视| 一区二区三区在线视频免费| 亚洲欧洲精品成人久久奇米网| 久久网这里都是精品| 日韩美女一区二区三区四区| 制服丝袜亚洲精品中文字幕| 欧美日本在线看| 欧美性生活影院| 日本道色综合久久| 欧美视频一区在线| 欧美日韩国产精选| 欧美日韩一区二区电影| 欧美日韩在线播放| 欧美日韩国产综合一区二区三区| 色综合久久天天| 在线观看日韩毛片| 欧美人成免费网站| 91精品国产入口| 欧美一区二区久久| 久久久五月婷婷| 欧美激情综合在线| 一区在线观看免费| 一区二区三区日本| 日韩精品午夜视频| 老司机免费视频一区二区三区| 久久 天天综合| 国产成人av影院| 色综合久久久久| 欧美一级一级性生活免费录像| 欧美大黄免费观看| 中文一区在线播放| 亚洲黄色尤物视频| 日韩精品国产欧美| 国产一区二区三区av电影| av中文字幕不卡| 欧美男男青年gay1069videost | 国内精品写真在线观看| 成人在线综合网| 欧美理论电影在线| 久久蜜臀中文字幕| 亚洲自拍偷拍网站| 久久91精品国产91久久小草| 99久久久无码国产精品| 欧美日韩国产在线观看| 欧美高清一级片在线观看| 亚洲自拍偷拍av| 精东粉嫩av免费一区二区三区| www.欧美色图| 日韩亚洲欧美一区| 亚洲美女一区二区三区| 激情久久五月天| 91精品福利视频| 国产视频视频一区| 午夜av区久久|