I have a <div>
with a bunch of text in it. This <div>
also has a .click()
event on it using jQuery.
The problem I'm having is that the .click()
is being triggered when selecting/highlighting text. Even holding the mouse down for several seconds before releasing.
Here is a JSFiddle that shows the issue: http://jsfiddle.net/ym5JX/
The behavior that I would expect is that highlighting text isn't the same as clicking on the element.
The onselect event occurs after some text has been selected in an element. The onselect event is mostly used on <input type="text"> or <textarea> elements.
Usage example: // Highlight "keyword" in the specified context $(". context"). mark("keyword"); // Highlight the custom regular expression in the specified context $(".
Highlight Text Using the Mark Tag Method in JavaScriptIf you surround any text inside the mark tag, the browser will automatically highlight it in a striking yellow color. This will make highlighting a searched text quite a simple task then.
That's because a click
is a mousedown
followed by a mouseup
. My suggestion is to check getSelection
inside the click
handler. If it's set, then you selected something, else you just clicked.
$('#click').click(function() { var sel = getSelection().toString(); if(!sel){ alert("clicked"); } });
DEMO: http://jsfiddle.net/ym5JX/3/
As I posted on comment, mosuedown + mouseup = click
which is exactly what highlighting does. There is workaround for this.. see below,
var isClick = 0; $('#click').click(function() { if (isClick == 1) { alert("clicked"); } }).mousedown(function () { isClick = 1; }).mousemove(function () { isClick = 0; });
DEMO
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With