如果我将一个对象拖到另一个元素上,它第一次不起作用,但第二次起作用。
原因似乎是我的辅助元素是一个图像,它没有设置宽度和高度。
这是代码:
HTML
<div class="target"></div>
<div class="element"></div>
CSS
.target {
width: 63px;
height: 63px;
background: rgb(185, 185, 185);
position: relative;
}
.helper {
background: pink;
}
.box {
width: 63px;
height: 63px;
background: orange;
}
.element {
width: 63px;
height: 63px;
background: navy;
position: absolute;
left: 200px;
top: 10px;
}
JavaScript
$(".element").draggable({
cursor: 'move',
helper: function () {
return $('<img src="http://cdn1.iconfinder.com/data/icons/tsgk-cctld-territories-icons-flags-pack-v---borderless/16/saint_helier.png" class="helper"></img>');
},
snap: ".target"
});
$('.target').droppable( {
accept: ".element",
hoverClass: 'hovered',
drop: function(event, ui){
var tile = $('<div class="box"><span>Tile</span></div>');
$(".target").append(tile);
}
});
如果我向.helper类添加高度和宽度,它会按预期工作。
这是代码的链接:http: //jsfiddle.net/ZzetJ/1/
我想了解为什么它第二次起作用,为什么需要设置高度和宽度?
编辑:
从下面的评论中,我看到人们无法重现这些问题。
对我来说,它不适用于 Chrome 和 Firefox,但适用于 IE9。确保在运行之前有一个清晰的缓存。
铬版:27.0.1453.110 m
复制步骤:
- 使用 Chrome 并按 CTRL+SHIFT+N 进入隐身模式。
- 转到 jsfiddle.net/ZzetJ/1/
将蓝色 div 拖到灰色 div 的顶部。
结果:您应该在拖动时看到一个图像,并且当拖放发生时,灰色 div 应该变为橙色。在这种情况下,它会失败。
再次将蓝色 div 拖到灰色 div 的顶部。
结果:灰色 div 成功变为橙色。
在同一浏览器中打开一个新选项卡。
- 转到 jsfiddle.net/ZzetJ/1/
将蓝色 div 拖到灰色 div 的顶部。
结果:灰色 div 变为橙色。
所以一定要清除缓存。