Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to detect left click anywhere on the document using jQuery?

I have this right now:

$(document).click(function(e) { alert('clicked'); });

In Firefox, this event is firing when I left-click OR right-click. I only want it to fire when I left-click.

Does attaching a click handler to the document work differently than attaching it to other elements? For other elements, it only seems to fire on left clicks.

Is there a way to detect only left clicks besides looking at e.button, which is browser-dependent?

Thanks

like image 869
Emmett Avatar asked Jun 08 '09 15:06

Emmett


People also ask

How do I detect a click outside an element jQuery?

Answer: Use the event. target Property You can use the event. target property to detect a click outside of an element such as dropdown menu. This property returns the DOM element that initiated the event.

How can you tell if a mouse is left or right jQuery?

Using the mousedown() method: The mousedown() method in jQuery can be used to bind an event handler to the default 'mousedown' JavaScript event. This can be used to trigger an event. The event object's 'which' property can then used to check the respective mouse button.

How do I know if my element is clicked?

To check if an element was clicked, add a click event listener to the element, e.g. button. addEventListener('click', function handleClick() {}) . The click event is dispatched every time the element is clicked. Here is the HTML for the examples in this article.

What is click in jQuery?

jQuery click() MethodThe click event occurs when an element is clicked. The click() method triggers the click event, or attaches a function to run when a click event occurs.


1 Answers

Try

$(document).click(function(e) { 
    // Check for left button
    if (e.button == 0) {
        alert('clicked'); 
    }
});

However, there seems to be some confusion as to whether IE returns 1 or 0 as left click, you may need to test this :)

Further reading here: jQuery Gotcha

EDIT: missed the bit where you asked not to use e.button. Sorry!

However, the example here returns the same ID regardless of looking at it in FF or IE, and uses e.button. could possibly have updated the jQuery framework? The other answer is that older versions of IE return a different value, which would be a pain. Unfortunately I only have IE 7/8 here to test against.

like image 112
RYFN Avatar answered Oct 21 '22 22:10

RYFN