QUESTION:
Using jQuery, how can I imitate a click-and-hold event?
I am currently beating my head against a wall and cannot seem to figure out how to go about this!
I have also tried searching on google and in forums, but to no avail.
In my current example, I am using jQuery UI's .draggable()
.
Ideally, I would like to do the following:
- Perform a click/mousedown on the
div
. - Imitate a click-and-hold event and be able to move the element freely.
- On next click/mousedown, end click-and-hold event.
When I try functions like:
$("#drag").draggable().mousedown(function(e){
e.preventDefault();
return $(this).mousedown();
});
It then causes an infinite loop, which will eventually result in the browser crashing. However, I am not sure how one would go about initiating a constant .mousedown()
event.
Here is a demo of what I currently have: http://jsfiddle.net/vPruR/16/ .
Any help would be greatly appreciated!
Wolf and Dom's solutions work great and are the basis for my solution, but you mentioned you were using jquery ui's
draggable
, so here is a possible solution using jquery ui'sdraggable
object in conjunction with adroppable
. I was trying to get the droppable's events to fire when a draggable dragged over them and dropped on them, so I utilized the built-in/private functions of theui.mouse
object thatdraggable
inherits from and overrides.Heres a fiddle. To see the droppable stuff, just uncomment the droppable stuff in the js.
Note: this solution is for the current jquery ui version (1.9.2), but may change in future versions because it does use private calls.
I don't think there is some option to simulate the click-and-hold. Also it may create too much browser dependency.
So you could try something as below.
DEMO: http://jsfiddle.net/dirtyd77/qbcQn/