Подтвердить что ты не робот

Разница между mousedown и щелчком в jquery

Я изучаю события в jquery. Выполняя их, я наткнулся на сомнения. В чем разница между событиями mousedown() и click(). И какое событие я должен использовать при каких условиях.?

Например: Оба события выполняют одну и ту же задачу в приведенном ниже коде:

$("#p1").mousedown(function(){
  alert("Mouse down over p1!");
});


$("#p1").click(function(){
  alert("Mouse down over p1!");
});

Оба выполняют то же самое. Может кто-то уточнить разницу. Если это так, что я должен предпочесть?

4b9b3361

Ответ 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, пока мышь не перемещается в процессе.