Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
leizi929
Sortable
提交
037f2c4b
S
Sortable
项目概览
leizi929
/
Sortable
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Sortable
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
037f2c4b
编写于
1月 29, 2014
作者:
M
mtetlow
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Adding IE9 support for draggable elements that are not <a> or <img>
上级
0fcdece4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
9 addition
and
1 deletion
+9
-1
Sortable.js
Sortable.js
+8
-0
Sortable.min.js
Sortable.min.js
+1
-1
未找到文件。
Sortable.js
浏览文件 @
037f2c4b
...
@@ -93,6 +93,7 @@
...
@@ -93,6 +93,7 @@
_on
(
el
,
'
mousedown
'
,
this
.
_onTapStart
);
_on
(
el
,
'
mousedown
'
,
this
.
_onTapStart
);
_on
(
el
,
'
touchstart
'
,
this
.
_onTapStart
);
_on
(
el
,
'
touchstart
'
,
this
.
_onTapStart
);
_on
(
el
,
'
selectstart
'
,
this
.
_onTapStart
);
_on
(
el
,
'
dragover
'
,
this
.
_onDragOver
);
_on
(
el
,
'
dragover
'
,
this
.
_onDragOver
);
_on
(
el
,
'
dragenter
'
,
this
.
_onDragOver
);
_on
(
el
,
'
dragenter
'
,
this
.
_onDragOver
);
...
@@ -124,6 +125,13 @@
...
@@ -124,6 +125,13 @@
target
=
_closest
(
target
,
options
.
draggable
,
el
);
target
=
_closest
(
target
,
options
.
draggable
,
el
);
//IE 9 Support
if
(
target
&&
evt
.
type
==
'
selectstart
'
){
if
(
target
.
tagName
!=
'
A
'
&&
target
.
tagName
!=
'
IMG
'
){
target
.
dragDrop
();
}
}
if
(
target
&&
!
dragEl
&&
(
target
.
parentNode
===
el
)
){
if
(
target
&&
!
dragEl
&&
(
target
.
parentNode
===
el
)
){
tapEvt
=
evt
;
tapEvt
=
evt
;
target
.
draggable
=
true
;
target
.
draggable
=
true
;
...
...
Sortable.min.js
浏览文件 @
037f2c4b
/*! Sortable 0.1.6 - MIT | git://github.com/rubaxa/Sortable.git */
/*! Sortable 0.1.6 - MIT | git://github.com/rubaxa/Sortable.git */
!
function
(
a
){
"
use strict
"
;
"
function
"
==
typeof
define
&&
define
.
amd
?
define
(
a
):
window
.
Sortable
=
a
()}(
function
(){
"
use strict
"
;
function
a
(
a
,
c
){
this
.
el
=
a
,
this
.
options
=
c
=
c
||
{},
c
.
group
=
c
.
group
||
Math
.
random
(),
c
.
handle
=
c
.
handle
||
null
,
c
.
draggable
=
c
.
draggable
||
a
.
children
[
0
]
&&
a
.
children
[
0
].
nodeName
||
"
li
"
,
c
.
ghostClass
=
c
.
ghostClass
||
"
sortable-ghost
"
,
c
.
onAdd
=
b
(
this
,
c
.
onAdd
||
A
),
c
.
onUpdate
=
b
(
this
,
c
.
onUpdate
||
A
),
c
.
onRemove
=
b
(
this
,
c
.
onRemove
||
A
),
a
[
u
]
=
c
.
group
;
for
(
var
d
in
this
)
"
_
"
===
d
.
charAt
(
0
)
&&
(
this
[
d
]
=
b
(
this
,
this
[
d
]));
e
(
a
,
"
add
"
,
c
.
onAdd
),
e
(
a
,
"
update
"
,
c
.
onUpdate
),
e
(
a
,
"
remove
"
,
c
.
onRemove
),
e
(
a
,
"
mousedown
"
,
this
.
_onTapStart
),
e
(
a
,
"
touchstart
"
,
this
.
_onTapStart
),
e
(
a
,
"
dragover
"
,
this
.
_onDragOver
),
e
(
a
,
"
dragenter
"
,
this
.
_onDragOver
),
C
.
push
(
this
.
_onDragOver
)}
function
b
(
a
,
b
){
var
c
=
B
.
call
(
arguments
,
2
);
return
b
.
bind
?
b
.
bind
.
apply
(
b
,[
a
].
concat
(
c
)):
function
(){
return
b
.
apply
(
a
,
c
.
concat
(
B
.
call
(
arguments
)))}}
function
c
(
a
,
b
,
c
){
if
(
a
){
c
=
c
||
w
,
b
=
b
.
split
(
"
.
"
);
var
d
=
b
.
shift
().
toUpperCase
(),
e
=
new
RegExp
(
"
\\
s(
"
+
b
.
join
(
"
|
"
)
+
"
)
\\
s
"
,
"
g
"
);
do
if
(
!
(
""
!==
d
&&
a
.
nodeName
!=
d
||
b
.
length
&&
((
"
"
+
a
.
className
+
"
"
).
match
(
e
)
||
[]).
length
!=
b
.
length
))
return
a
;
while
(
a
!==
c
&&
(
a
=
a
.
parentNode
))}
return
null
}
function
d
(
a
){
a
.
dataTransfer
.
dropEffect
=
"
move
"
,
a
.
preventDefault
()}
function
e
(
a
,
b
,
c
){
a
.
addEventListener
(
b
,
c
,
!
1
)}
function
f
(
a
,
b
,
c
){
a
.
removeEventListener
(
b
,
c
,
!
1
)}
function
g
(
a
,
b
,
c
){
if
(
a
)
if
(
a
.
classList
)
a
.
classList
[
c
?
"
add
"
:
"
remove
"
](
b
);
else
{
var
d
=
(
"
"
+
a
.
className
+
"
"
).
replace
(
/
\s
+/g
,
"
"
).
replace
(
"
"
+
b
+
"
"
,
""
);
a
.
className
=
d
+
(
c
?
"
"
+
b
:
""
)}}
function
h
(
a
,
b
,
c
){
if
(
a
&&
a
.
style
){
if
(
void
0
===
c
)
return
w
.
defaultView
&&
w
.
defaultView
.
getComputedStyle
?
c
=
w
.
defaultView
.
getComputedStyle
(
a
,
""
):
a
.
currentStyle
&&
(
c
=
a
.
currentStyle
),
void
0
===
b
?
c
:
c
[
b
];
a
.
style
[
b
]
=
c
+
(
"
string
"
==
typeof
c
?
""
:
"
px
"
)}}
function
i
(
a
,
b
,
c
){
if
(
a
){
var
d
=
a
.
getElementsByTagName
(
b
),
e
=
0
,
f
=
d
.
length
;
if
(
c
)
for
(;
f
>
e
;
e
++
)
c
(
d
[
e
],
e
);
return
d
}
return
[]}
function
j
(
a
){
return
a
.
draggable
=!
1
}
function
k
(){
y
=!
1
}
var
l
,
m
,
n
,
o
,
p
,
q
,
r
,
s
,
t
,
u
=
"
Sortable
"
+
(
new
Date
).
getTime
(),
v
=
window
,
w
=
v
.
document
,
x
=
v
.
parseInt
,
y
=!
1
,
z
=
function
(
a
,
b
){
var
c
=
w
.
createEvent
(
"
Event
"
);
return
c
.
initEvent
(
a
,
!
0
,
!
0
),
c
.
item
=
b
,
c
},
A
=
function
(){},
B
=
[].
slice
,
C
=
[];
return
a
.
prototype
=
{
constructor
:
a
,
_applyEffects
:
function
(){
g
(
l
,
this
.
options
.
ghostClass
,
!
0
)},
_onTapStart
:
function
(
a
){
var
b
=
a
.
touches
&&
a
.
touches
[
0
],
f
=
(
b
||
a
).
target
,
g
=
this
.
options
,
h
=
this
.
el
;
if
(
g
.
handle
&&
(
f
=
c
(
f
,
g
.
handle
,
h
)),
f
=
c
(
f
,
g
.
draggable
,
h
),
f
&&!
l
&&
f
.
parentNode
===
h
){
s
=
a
,
f
.
draggable
=!
0
,
i
(
f
,
"
a
"
,
j
),
i
(
f
,
"
img
"
,
j
),
b
&&
(
s
=
{
target
:
f
,
clientX
:
b
.
clientX
,
clientY
:
b
.
clientY
},
this
.
_onDragStart
(
s
,
!
0
),
a
.
preventDefault
()),
e
(
this
.
el
,
"
dragstart
"
,
this
.
_onDragStart
),
e
(
this
.
el
,
"
dragend
"
,
this
.
_onDrop
),
e
(
w
,
"
dragover
"
,
d
);
try
{
w
.
selection
?
w
.
selection
.
empty
():
window
.
getSelection
().
removeAllRanges
()}
catch
(
k
){}}},
_emulateDragOver
:
function
(){
if
(
t
){
h
(
m
,
"
display
"
,
"
none
"
);
var
a
=
w
.
elementFromPoint
(
t
.
clientX
,
t
.
clientY
),
b
=
a
,
c
=
this
.
options
.
group
,
d
=
C
.
length
;
do
{
if
(
b
[
u
]
===
c
){
for
(;
d
--
;)
C
[
d
]({
clientX
:
t
.
clientX
,
clientY
:
t
.
clientY
,
target
:
a
,
rootEl
:
b
});
break
}
a
=
b
}
while
(
b
=
b
.
parentNode
);
h
(
m
,
"
display
"
,
""
)}},
_onTouchMove
:
function
(
a
){
if
(
s
){
var
b
=
a
.
touches
[
0
],
c
=
b
.
clientX
-
s
.
clientX
,
d
=
b
.
clientY
-
s
.
clientY
;
t
=
b
,
h
(
m
,
"
webkitTransform
"
,
"
translate3d(
"
+
c
+
"
px,
"
+
d
+
"
px,0)
"
)}},
_onDragStart
:
function
(
a
,
b
){
var
c
=
a
.
target
,
d
=
a
.
dataTransfer
;
if
(
n
=
this
.
el
,
l
=
c
,
o
=
c
.
nextSibling
,
r
=
this
.
options
.
group
,
b
){
var
f
,
g
=
c
.
getBoundingClientRect
(),
i
=
h
(
c
);
m
=
c
.
cloneNode
(
!
0
),
h
(
m
,
"
top
"
,
g
.
top
-
x
(
i
.
marginTop
,
10
)),
h
(
m
,
"
left
"
,
g
.
left
-
x
(
i
.
marginLeft
,
10
)),
h
(
m
,
"
width
"
,
g
.
width
),
h
(
m
,
"
height
"
,
g
.
height
),
h
(
m
,
"
opacity
"
,
"
0.8
"
),
h
(
m
,
"
position
"
,
"
fixed
"
),
h
(
m
,
"
zIndex
"
,
"
100000
"
),
n
.
appendChild
(
m
),
f
=
m
.
getBoundingClientRect
(),
h
(
m
,
"
width
"
,
2
*
g
.
width
-
f
.
width
),
h
(
m
,
"
height
"
,
2
*
g
.
height
-
f
.
height
),
e
(
w
,
"
touchmove
"
,
this
.
_onTouchMove
),
e
(
w
,
"
touchend
"
,
this
.
_onDrop
),
this
.
_loopId
=
setInterval
(
this
.
_emulateDragOver
,
150
)}
else
d
.
effectAllowed
=
"
move
"
,
d
.
setData
(
"
Text
"
,
c
.
textContent
),
e
(
w
,
"
drop
"
,
this
.
_onDrop
);
setTimeout
(
this
.
_applyEffects
)},
_onDragOver
:
function
(
a
){
if
(
!
y
&&
r
===
this
.
options
.
group
&&
(
void
0
===
a
.
rootEl
||
a
.
rootEl
===
this
.
el
)){
var
b
=
this
.
el
,
d
=
c
(
a
.
target
,
this
.
options
.
draggable
,
b
);
if
(
0
===
b
.
children
.
length
||
b
.
children
[
0
]
===
m
)
b
.
appendChild
(
l
);
else
if
(
d
&&
d
!==
l
&&
void
0
!==
d
.
parentNode
[
u
]){
p
!==
d
&&
(
p
=
d
,
q
=
h
(
d
));
var
e
,
f
=
d
.
getBoundingClientRect
(),
g
=
f
.
right
-
f
.
left
,
i
=
f
.
bottom
-
f
.
top
,
j
=
/left|right|inline/
.
test
(
q
.
cssFloat
+
q
.
display
),
n
=
(
j
?(
a
.
clientX
-
f
.
left
)
/
g
:(
a
.
clientY
-
f
.
top
)
/
i
)
>
.
5
,
o
=
d
.
offsetWidth
>
l
.
offsetWidth
,
s
=
d
.
offsetHeight
>
l
.
offsetHeight
,
t
=
d
.
nextSibling
;
y
=!
0
,
setTimeout
(
k
,
30
),
e
=
j
?
d
.
previousElementSibling
===
l
&&!
o
||
n
>
.
5
&&
o
:
d
.
nextElementSibling
!==
l
&&!
s
||
n
>
.
5
&&
s
,
e
&&!
t
?
b
.
appendChild
(
l
):
d
.
parentNode
.
insertBefore
(
l
,
e
?
t
:
d
)}}},
_onDrop
:
function
(
a
){
clearInterval
(
this
.
_loopId
),
f
(
w
,
"
drop
"
,
this
.
_onDrop
),
f
(
w
,
"
dragover
"
,
d
),
f
(
this
.
el
,
"
dragend
"
,
this
.
_onDrop
),
f
(
this
.
el
,
"
dragstart
"
,
this
.
_onDragStart
),
f
(
w
,
"
touchmove
"
,
this
.
_onTouchMove
),
f
(
w
,
"
touchend
"
,
this
.
_onDrop
),
a
&&
(
a
.
preventDefault
(),
a
.
stopPropagation
(),
m
&&
m
.
parentNode
.
removeChild
(
m
),
l
&&
(
g
(
l
,
this
.
options
.
ghostClass
,
!
1
),
n
.
contains
(
l
)?
l
.
nextSibling
!==
o
&&
l
.
dispatchEvent
(
z
(
"
update
"
,
l
)):(
n
.
dispatchEvent
(
z
(
"
remove
"
,
l
)),
l
.
dispatchEvent
(
z
(
"
add
"
,
l
)))),
n
=
l
=
m
=
o
=
s
=
t
=
p
=
q
=
r
=
null
)},
destroy
:
function
(){
var
a
=
this
.
el
,
b
=
this
.
options
;
f
(
a
,
"
add
"
,
b
.
onAdd
),
f
(
a
,
"
update
"
,
b
.
onUpdate
),
f
(
a
,
"
remove
"
,
b
.
onRemove
),
f
(
a
,
"
mousedown
"
,
this
.
_onTapStart
),
f
(
a
,
"
touchstart
"
,
this
.
_onTapStart
),
f
(
a
,
"
dragover
"
,
this
.
_onDragOver
),
f
(
a
,
"
dragenter
"
,
this
.
_onDragOver
),
Array
.
prototype
.
forEach
.
call
(
a
.
querySelectorAll
(
"
[draggable]
"
),
function
(
a
){
a
.
removeAttribute
(
"
draggable
"
)}),
C
.
splice
(
C
.
indexOf
(
this
.
_onDragOver
),
1
),
this
.
_onDrop
(),
this
.
el
=
null
}},
a
.
utils
=
{
on
:
e
,
off
:
f
,
css
:
h
,
find
:
i
,
bind
:
b
,
closest
:
c
,
toggleClass
:
g
},
a
.
version
=
"
0.1.6
"
,
a
});
!
function
(
a
){
"
use strict
"
;
"
function
"
==
typeof
define
&&
define
.
amd
?
define
(
a
):
window
.
Sortable
=
a
()}(
function
(){
"
use strict
"
;
function
a
(
a
,
c
){
this
.
el
=
a
,
this
.
options
=
c
=
c
||
{},
c
.
group
=
c
.
group
||
Math
.
random
(),
c
.
handle
=
c
.
handle
||
null
,
c
.
draggable
=
c
.
draggable
||
a
.
children
[
0
]
&&
a
.
children
[
0
].
nodeName
||
"
li
"
,
c
.
ghostClass
=
c
.
ghostClass
||
"
sortable-ghost
"
,
c
.
onAdd
=
b
(
this
,
c
.
onAdd
||
A
),
c
.
onUpdate
=
b
(
this
,
c
.
onUpdate
||
A
),
c
.
onRemove
=
b
(
this
,
c
.
onRemove
||
A
),
a
[
u
]
=
c
.
group
;
for
(
var
d
in
this
)
"
_
"
===
d
.
charAt
(
0
)
&&
(
this
[
d
]
=
b
(
this
,
this
[
d
]));
e
(
a
,
"
add
"
,
c
.
onAdd
),
e
(
a
,
"
update
"
,
c
.
onUpdate
),
e
(
a
,
"
remove
"
,
c
.
onRemove
),
e
(
a
,
"
mousedown
"
,
this
.
_onTapStart
),
e
(
a
,
"
touchstart
"
,
this
.
_onTapStart
),
e
(
a
,
"
selectstart
"
,
this
.
_onTapStart
),
e
(
a
,
"
dragover
"
,
this
.
_onDragOver
),
e
(
a
,
"
dragenter
"
,
this
.
_onDragOver
),
C
.
push
(
this
.
_onDragOver
)}
function
b
(
a
,
b
){
var
c
=
B
.
call
(
arguments
,
2
);
return
b
.
bind
?
b
.
bind
.
apply
(
b
,[
a
].
concat
(
c
)):
function
(){
return
b
.
apply
(
a
,
c
.
concat
(
B
.
call
(
arguments
)))}}
function
c
(
a
,
b
,
c
){
if
(
a
){
c
=
c
||
w
,
b
=
b
.
split
(
"
.
"
);
var
d
=
b
.
shift
().
toUpperCase
(),
e
=
new
RegExp
(
"
\\
s(
"
+
b
.
join
(
"
|
"
)
+
"
)
\\
s
"
,
"
g
"
);
do
if
(
!
(
""
!==
d
&&
a
.
nodeName
!=
d
||
b
.
length
&&
((
"
"
+
a
.
className
+
"
"
).
match
(
e
)
||
[]).
length
!=
b
.
length
))
return
a
;
while
(
a
!==
c
&&
(
a
=
a
.
parentNode
))}
return
null
}
function
d
(
a
){
a
.
dataTransfer
.
dropEffect
=
"
move
"
,
a
.
preventDefault
()}
function
e
(
a
,
b
,
c
){
a
.
addEventListener
(
b
,
c
,
!
1
)}
function
f
(
a
,
b
,
c
){
a
.
removeEventListener
(
b
,
c
,
!
1
)}
function
g
(
a
,
b
,
c
){
if
(
a
)
if
(
a
.
classList
)
a
.
classList
[
c
?
"
add
"
:
"
remove
"
](
b
);
else
{
var
d
=
(
"
"
+
a
.
className
+
"
"
).
replace
(
/
\s
+/g
,
"
"
).
replace
(
"
"
+
b
+
"
"
,
""
);
a
.
className
=
d
+
(
c
?
"
"
+
b
:
""
)}}
function
h
(
a
,
b
,
c
){
if
(
a
&&
a
.
style
){
if
(
void
0
===
c
)
return
w
.
defaultView
&&
w
.
defaultView
.
getComputedStyle
?
c
=
w
.
defaultView
.
getComputedStyle
(
a
,
""
):
a
.
currentStyle
&&
(
c
=
a
.
currentStyle
),
void
0
===
b
?
c
:
c
[
b
];
a
.
style
[
b
]
=
c
+
(
"
string
"
==
typeof
c
?
""
:
"
px
"
)}}
function
i
(
a
,
b
,
c
){
if
(
a
){
var
d
=
a
.
getElementsByTagName
(
b
),
e
=
0
,
f
=
d
.
length
;
if
(
c
)
for
(;
f
>
e
;
e
++
)
c
(
d
[
e
],
e
);
return
d
}
return
[]}
function
j
(
a
){
return
a
.
draggable
=!
1
}
function
k
(){
y
=!
1
}
var
l
,
m
,
n
,
o
,
p
,
q
,
r
,
s
,
t
,
u
=
"
Sortable
"
+
(
new
Date
).
getTime
(),
v
=
window
,
w
=
v
.
document
,
x
=
v
.
parseInt
,
y
=!
1
,
z
=
function
(
a
,
b
){
var
c
=
w
.
createEvent
(
"
Event
"
);
return
c
.
initEvent
(
a
,
!
0
,
!
0
),
c
.
item
=
b
,
c
},
A
=
function
(){},
B
=
[].
slice
,
C
=
[];
return
a
.
prototype
=
{
constructor
:
a
,
_applyEffects
:
function
(){
g
(
l
,
this
.
options
.
ghostClass
,
!
0
)},
_onTapStart
:
function
(
a
){
var
b
=
a
.
touches
&&
a
.
touches
[
0
],
f
=
(
b
||
a
).
target
,
g
=
this
.
options
,
h
=
this
.
el
;
if
(
g
.
handle
&&
(
f
=
c
(
f
,
g
.
handle
,
h
)),
f
=
c
(
f
,
g
.
draggable
,
h
),
f
&&
"
selectstart
"
==
a
.
type
&&
"
A
"
!=
f
.
tagName
&&
"
IMG
"
!=
f
.
tagName
&&
f
.
dragDrop
(),
f
&&!
l
&&
f
.
parentNode
===
h
){
s
=
a
,
f
.
draggable
=!
0
,
i
(
f
,
"
a
"
,
j
),
i
(
f
,
"
img
"
,
j
),
b
&&
(
s
=
{
target
:
f
,
clientX
:
b
.
clientX
,
clientY
:
b
.
clientY
},
this
.
_onDragStart
(
s
,
!
0
),
a
.
preventDefault
()),
e
(
this
.
el
,
"
dragstart
"
,
this
.
_onDragStart
),
e
(
this
.
el
,
"
dragend
"
,
this
.
_onDrop
),
e
(
w
,
"
dragover
"
,
d
);
try
{
w
.
selection
?
w
.
selection
.
empty
():
window
.
getSelection
().
removeAllRanges
()}
catch
(
k
){}}},
_emulateDragOver
:
function
(){
if
(
t
){
h
(
m
,
"
display
"
,
"
none
"
);
var
a
=
w
.
elementFromPoint
(
t
.
clientX
,
t
.
clientY
),
b
=
a
,
c
=
this
.
options
.
group
,
d
=
C
.
length
;
do
{
if
(
b
[
u
]
===
c
){
for
(;
d
--
;)
C
[
d
]({
clientX
:
t
.
clientX
,
clientY
:
t
.
clientY
,
target
:
a
,
rootEl
:
b
});
break
}
a
=
b
}
while
(
b
=
b
.
parentNode
);
h
(
m
,
"
display
"
,
""
)}},
_onTouchMove
:
function
(
a
){
if
(
s
){
var
b
=
a
.
touches
[
0
],
c
=
b
.
clientX
-
s
.
clientX
,
d
=
b
.
clientY
-
s
.
clientY
;
t
=
b
,
h
(
m
,
"
webkitTransform
"
,
"
translate3d(
"
+
c
+
"
px,
"
+
d
+
"
px,0)
"
)}},
_onDragStart
:
function
(
a
,
b
){
var
c
=
a
.
target
,
d
=
a
.
dataTransfer
;
if
(
n
=
this
.
el
,
l
=
c
,
o
=
c
.
nextSibling
,
r
=
this
.
options
.
group
,
b
){
var
f
,
g
=
c
.
getBoundingClientRect
(),
i
=
h
(
c
);
m
=
c
.
cloneNode
(
!
0
),
h
(
m
,
"
top
"
,
g
.
top
-
x
(
i
.
marginTop
,
10
)),
h
(
m
,
"
left
"
,
g
.
left
-
x
(
i
.
marginLeft
,
10
)),
h
(
m
,
"
width
"
,
g
.
width
),
h
(
m
,
"
height
"
,
g
.
height
),
h
(
m
,
"
opacity
"
,
"
0.8
"
),
h
(
m
,
"
position
"
,
"
fixed
"
),
h
(
m
,
"
zIndex
"
,
"
100000
"
),
n
.
appendChild
(
m
),
f
=
m
.
getBoundingClientRect
(),
h
(
m
,
"
width
"
,
2
*
g
.
width
-
f
.
width
),
h
(
m
,
"
height
"
,
2
*
g
.
height
-
f
.
height
),
e
(
w
,
"
touchmove
"
,
this
.
_onTouchMove
),
e
(
w
,
"
touchend
"
,
this
.
_onDrop
),
this
.
_loopId
=
setInterval
(
this
.
_emulateDragOver
,
150
)}
else
d
.
effectAllowed
=
"
move
"
,
d
.
setData
(
"
Text
"
,
c
.
textContent
),
e
(
w
,
"
drop
"
,
this
.
_onDrop
);
setTimeout
(
this
.
_applyEffects
)},
_onDragOver
:
function
(
a
){
if
(
!
y
&&
r
===
this
.
options
.
group
&&
(
void
0
===
a
.
rootEl
||
a
.
rootEl
===
this
.
el
)){
var
b
=
this
.
el
,
d
=
c
(
a
.
target
,
this
.
options
.
draggable
,
b
);
if
(
0
===
b
.
children
.
length
||
b
.
children
[
0
]
===
m
)
b
.
appendChild
(
l
);
else
if
(
d
&&
d
!==
l
&&
void
0
!==
d
.
parentNode
[
u
]){
p
!==
d
&&
(
p
=
d
,
q
=
h
(
d
));
var
e
,
f
=
d
.
getBoundingClientRect
(),
g
=
f
.
right
-
f
.
left
,
i
=
f
.
bottom
-
f
.
top
,
j
=
/left|right|inline/
.
test
(
q
.
cssFloat
+
q
.
display
),
n
=
(
j
?(
a
.
clientX
-
f
.
left
)
/
g
:(
a
.
clientY
-
f
.
top
)
/
i
)
>
.
5
,
o
=
d
.
offsetWidth
>
l
.
offsetWidth
,
s
=
d
.
offsetHeight
>
l
.
offsetHeight
,
t
=
d
.
nextSibling
;
y
=!
0
,
setTimeout
(
k
,
30
),
e
=
j
?
d
.
previousElementSibling
===
l
&&!
o
||
n
>
.
5
&&
o
:
d
.
nextElementSibling
!==
l
&&!
s
||
n
>
.
5
&&
s
,
e
&&!
t
?
b
.
appendChild
(
l
):
d
.
parentNode
.
insertBefore
(
l
,
e
?
t
:
d
)}}},
_onDrop
:
function
(
a
){
clearInterval
(
this
.
_loopId
),
f
(
w
,
"
drop
"
,
this
.
_onDrop
),
f
(
w
,
"
dragover
"
,
d
),
f
(
this
.
el
,
"
dragend
"
,
this
.
_onDrop
),
f
(
this
.
el
,
"
dragstart
"
,
this
.
_onDragStart
),
f
(
w
,
"
touchmove
"
,
this
.
_onTouchMove
),
f
(
w
,
"
touchend
"
,
this
.
_onDrop
),
a
&&
(
a
.
preventDefault
(),
a
.
stopPropagation
(),
m
&&
m
.
parentNode
.
removeChild
(
m
),
l
&&
(
g
(
l
,
this
.
options
.
ghostClass
,
!
1
),
n
.
contains
(
l
)?
l
.
nextSibling
!==
o
&&
l
.
dispatchEvent
(
z
(
"
update
"
,
l
)):(
n
.
dispatchEvent
(
z
(
"
remove
"
,
l
)),
l
.
dispatchEvent
(
z
(
"
add
"
,
l
)))),
n
=
l
=
m
=
o
=
s
=
t
=
p
=
q
=
r
=
null
)},
destroy
:
function
(){
var
a
=
this
.
el
,
b
=
this
.
options
;
f
(
a
,
"
add
"
,
b
.
onAdd
),
f
(
a
,
"
update
"
,
b
.
onUpdate
),
f
(
a
,
"
remove
"
,
b
.
onRemove
),
f
(
a
,
"
mousedown
"
,
this
.
_onTapStart
),
f
(
a
,
"
touchstart
"
,
this
.
_onTapStart
),
f
(
a
,
"
dragover
"
,
this
.
_onDragOver
),
f
(
a
,
"
dragenter
"
,
this
.
_onDragOver
),
Array
.
prototype
.
forEach
.
call
(
a
.
querySelectorAll
(
"
[draggable]
"
),
function
(
a
){
a
.
removeAttribute
(
"
draggable
"
)}),
C
.
splice
(
C
.
indexOf
(
this
.
_onDragOver
),
1
),
this
.
_onDrop
(),
this
.
el
=
null
}},
a
.
utils
=
{
on
:
e
,
off
:
f
,
css
:
h
,
find
:
i
,
bind
:
b
,
closest
:
c
,
toggleClass
:
g
},
a
.
version
=
"
0.1.6
"
,
a
});
\ No newline at end of file
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录