Разница между mousedown и щелчком в jquery
Я изучаю события в jquery. Выполняя их, я наткнулся на сомнения. В чем разница между событиями mousedown() и click(). И какое событие я должен использовать при каких условиях.?
Например:
Оба события выполняют одну и ту же задачу в приведенном ниже коде:
$("#p1").mousedown(function(){
alert("Mouse down over p1!");
});
$("#p1").click(function(){
alert("Mouse down over p1!");
});
Оба выполняют то же самое. Может кто-то уточнить разницу. Если это так, что я должен предпочесть?
Ответы
Ответ 1
onMouseDown
будет срабатывать при нажатии левой или правой (или средней). Аналогично, onMouseUp
будет срабатывать при отпускании любой кнопки. onMouseDown
будет срабатывать, даже если щелкнуть мышью на объекте, а затем отойти от него, а onMouseUp
будет срабатывать, если вы нажмете и удерживаете кнопку в другом месте, затем отпустите ее над объектом.
onClick
будет срабатывать только при нажатии и отпускании левой кнопки мыши на том же объекте. Если вы заботитесь о порядке, если на одном и том же объекте установлены все 3 события, это onMouseDown
, onMouseUp
, затем onClick
. Каждый из них должен запускать только один раз.
Подробнее:
http://api.jquery.com/click/
http://api.jquery.com/mouseup/
http://api.jquery.com/mousedown/
Источник, написанный Антон Бакшиев
Ответ 2
A mousedown
событие запускается при нажатии кнопки мыши, но до его отпускания.
Событие click
запускается после mousedown
и mouseup
.
Ответ 3
$(element).click()
срабатывает, когда вы нажимаете кнопку мыши , а затем отпускаете.
$(element).mousedown()
срабатывает, затем вы нажимаете кнопку мыши.
Попробуйте удерживать нажатую кнопку над этой кнопкой, а затем отпустите ее здесь: http://jsfiddle.net/n9rJ9/
Ответ 4
Они этого не делают. Вы могли бы так подумать, поскольку вы связали оба обработчика событий с одним и тем же элементом, поэтому mousedown всегда будет срабатывать до того, как произойдет событие клика.
Если вы привяжете их к различным элементам, вы увидите, что mousdown всегда будет нажимать кнопку (любую кнопку мыши) без релиза, а щелчок будет гореть после того, как вы отпустите кнопку мыши левой (основной) стороны.
Посмотрите этот маленький jsfiddle: http://jsfiddle.net/wBfbm/
$("#p1").mousedown(function(){
alert("Mouse down over p1!");
});
$("#p2").click(function(){
alert("Mouse down over p1!");
});
Ответ 5
onMouseDown
будет срабатывать при нажатии левой или правой (или средней).
onClick
будет срабатывать только при нажатии и отпускании левой кнопки мыши на том же объекте.
Ответ 6
Попробуйте этот путь. Поскольку event.stopPropagation не останавливает событие события click от мыши вниз. События мыши и нажатия не связаны друг с другом.
var mousedDownFired = false;
$("#id").mousedown(function(event){
mousedDownFired =true;
//code
});
$("#id").click(function(event){
if(mousedDownFired)
{
mousedDownFired = false;
return;
}
//code
});
Обновлено:
NO. События мыши вызываются таким образом
1) MouseDown
2) Нажмите
3) MouseUp
если нажатие мыши запускается, тогда флаг будет активирован после нажатия мыши. Нажмите кнопку события. В этом событии клика будет отключена переменная флага. это будет работать циклично. не рассматривая две мыши или два щелчка
Ответ 7
В mouseDown, mouseUp и mouseClick есть несколько событий, связанных с щелчком мыши, плюс несколько других.
Событию mouseClick обычно предшествует mouseDown, за которым вскоре следует mouseUp, пока мышь не перемещается в процессе.