1

我在同一页面上运行thickbox和jquery ui draggable,它们是冲突的。

Jquery UI Draggable 允许我使用以下代码将东西从一个地方拖放到另一个地方:

$(".droppable").droppable({  
      drop: function(ev, ui) {  
             do stuff  
}  
});

Thickbox 从点击事件开始,本质上是这样的代码:

$(".thickbox").click(function(){  
thickbox functions...  
});

但是因为thickbox链接在可拖动的div内,所以当我拖动链接时它会打开thickbox!因此,问题。

如何更改此代码,以便:

  1. 当我拖动链接时,它不会打开厚框。
  2. 当我单击链接(不拖动)时,它会打开厚框。

谢谢!

4

1 回答 1

2

在显示thickbox之前检查元素是否被拖动。或在拖动时禁用厚盒事件处理程序。

例如:

$(".thickbox").mouseup(function(){  
    if (is_being_dragged()) return;
    // thickbox functions...  
});

is_being_dragged() 必须检查拖动函数设置的标志。拖动功能完成后应取消设置拖动标志。

您也可以独立于您正在使用的拖动功能解决此问题,方法是将点击功能设置为 onmousedown,然后是 onmouseup。

$(".thickbox").mousedown(function(){  
   this.__down = new Date().getTime(); 
});

$(".thickbox").mouseup(function(){  
   var interval = new Date().getTime() - this.__down; 
   // assume dragged if it was pressed 50 millisecs or more ago
   if (interval > 50) { return }
});

假设拖动时间超过 50 毫秒,点击次数更少。您可以看到最适合您的情况。

于 2009-07-08T08:07:32.977 回答