javascript - 被拖动时从可拖动对象中删除- jquery
问问题
1249 次
4 回答
2
当它们被拖动时,设置一个单击处理程序以防止默认操作,如下所示:
ui.draggable.find('a').click(function(e) { e.preventDefault(); });
正如我所说,当它们被拖动时执行它,以防在 drop 事件中执行它时为时已晚。
更新:
$('.draggable').draggable({
start: function( event, ui ) {
$('#dropdownAddTile').slideDown();
ui.draggable.find('a').click(function(e) {
e.preventDefault();
});
},
stop: function() {
$('#dropdownAddTile').slideUp();
},
containment: '#container',
snap:'.droppable',
snapMode:'inner',
revert:'invalid',
snapTolerance: 32
});
所以你可以打电话ui.draggable.find('a').click(function(e) { e.preventDefault();
于 2013-03-29T15:11:36.923 回答
0
该问题在 Chrome、Firefox 或 IE10 中没有出现,但在 IE9 及更低版本中确实发生了。
我的建议是参加preventDefault
这个活动。使用您的代码,
function handleDropEvent( event, ui ) {
event.preventDefault();
var draggable = ui.draggable;
var droppable = $(this);
var droppableId = $(this).attr("id");
var draggableId = ui.draggable.attr("id");
$('.draggable').draggable({containment: '#container', snap:'.droppable', snapMode:'inner', revert:'invalid',snapTolerance: 32});
$('.droppable').droppable({drop: handleDropEvent, accept: function(e){if(e.hasClass('draggable')) { if (!$(this).hasClass('occupied')) {return true; }}}});
var initPosit = ui.draggable.parent().attr('id');
$.post("tiles/updateTilePosition", { draggableId:draggableId, droppableId: droppableId }).done(function(data) {
})
$(this).addClass('occupied');
ui.draggable.parent().removeClass('occupied');
if($(ui.draggable).parent() !==$(this)){
$(ui.draggable).appendTo($( this ));
}
}
此外,如果您查看源代码,所有内容都已编码(撇号、引号等)。不确定这是如何发生的,但我会修复它。
于 2013-03-29T15:16:35.197 回答
-1
尝试将 onclick 设置为返回 false;
于 2013-03-29T15:06:09.143 回答
-3
如果我理解正确,您只是希望链接不能被拖动,对吗?做这个:
<a href="#test" draggable="false">Test</a>
这基本上就是你如何禁用拖动功能 idk 为什么每个人都为此编写这么长的代码......
于 2019-01-22T20:17:22.957 回答