移除<从一个可拖动的时候被拖动- jquery
remove <a href> from a draggable when being dragged - jquery
我有这个网站,这是一个可拖动链接的网格。当拖拽时,会出现一个下拉框,用户可以通过拖拽来删除可拖拽对象。
问题是,当他们把它放在水滴上时,链接打开了!这是不应该发生的。我试过添加
ui.draggable.find('a').removeAttr('href')
到我的handleDropEvent函数,但它没有帮助。
有没有javascript天才愿意看一看?
编辑我还试着添加:
ui.draggable.find('a').click(function(e) { e.preventDefault();
到如下:
$('.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});
另一个编辑我应该指出(刚刚发现)我已经将draggable类应用于像这样的href:
<a href class="draggable">
所以到目前为止的解决方案已经导致了这个问题,我们删除了链接,它停止了可拖拽!还有别的办法吗?
当它们被拖动时,设置一个click处理程序来防止默认操作,如下所示:
ui.draggable.find('a').click(function(e) { e.preventDefault(); });
就像我说的,在被拖拽的时候做,以防在被拖拽的事件中做为时已晚。
更新:
$('.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();
这个问题在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 ));
}
}
另外,如果你查看源代码,所有内容都是编码的(撇号,引号等)不确定这是怎么发生的,但我会修复它。
尝试将onclick设置为返回false;
如果我理解正确的话,你只是想要一个链接不能拖动,对吗?这样做:
<a href="#test" draggable="false">Test</a>
这基本上是如何禁用拖动功能idk为什么每个人都写这么长的代码....
相关文章:
- jQuery UI可排序-多连接列表拖动
- JQuery UI可拖动潜水与滚动棒到鼠标
- jQuery UI-当可丢弃时,必须删除拖动的元素
- jQuery UI可拖动:自定义捕捉方法
- 是否可以在jquery中使用拖动滑块在4个图像之间滑动
- Bootstrap和JQuery可拖动
- jQuery拖动到相对位置的可排序列表中时出现可拖动辅助对象位置问题
- JQuery UI可拖动:如果助手设置为克隆,为什么不't可拖动集的已应用类到克隆
- jQuery可拖动克隆-safari问题
- 允许具有相同 id 的对象可以使用 jQuery 拖动
- 使一组对象与 jQuery 一起拖动
- 修改(可拖动|jQuery UI)
- “居中拖动Jquery”对话框
- keep:将鼠标悬停在拖动jquery元素上
- 拖动jQuery中已删除元素的克隆
- 不带id的可拖动jQuery的保存位置
- 移除<从一个可拖动的时候被拖动- jquery
- 面板无法拖动- Jquery UI
- 禁用在“猫头鹰轮播”中的特定元素(项目)中拖动 - jquery
- 防止在拖动 jquery UI 滑块时出现鼠标输入/鼠标离开事件