2009-11-23 2 views
0

Как я могу сделать с jQuery, чтобы событие mousemove было активным, только если нажата левая кнопка мыши, и как только кнопка отпускается, событие mousemove останавливается?jQuery: вопрос о событиях

+1

Просто связываться с '' mousemove' на mousedown' и отвязать на 'mouseup'. –

ответ

1

Простым способом является сохранение флага, для которого установлено значение true, только когда нажата левая кнопка. Это означает, что вы должны установить значение true, когда нажата левая кнопка мыши, и при сбросе установите значение false. Затем вы действуете на mousemove только в том случае, если этот флаг является истинным.

Это не специфическое решение jQuery, а общий шаблон для таких проблем, поэтому jQuery может обеспечить более приятное решение.

Возможно, вам придется позаботиться о специальных случаях, таких как потеря фокуса ввода или курсор мыши, выходящий за пределы этого div, в то время как левая кнопка удерживается нажатой.

5

Здесь я связываю событие mousemove на mousedown и отвязываю его на mouseup. Я использовал классную функцию в jQuery, поэтому в этот селектор добавляются другие события mousemove, но удаляется только тот, который вы хотите отменить. Их называют Namespaced Events.

$("#yourdivid").mousedown(function(e){ 
    if(e.which == 1){ 
     $(this).bind('mousemove.coolnamespace', function(e){ 
      // Your mousemove event 
     }); 
    } 
}).mouseup(function(e){ 
    if(e.which == 1) $(this).unbind('mousemove.coolnamespace'); 
}) 

Edit: Я обновил свой ответ, чтобы использовать нормированное поле which. jQuery нормализует это как 1 = Влево, 2 = Средний, 3 = Вправо. Значение button будет отличаться в зависимости от браузера.

0

Вы связываете событие mousedown и вызываете mousemove внутри этой функции и используете событие jQuery unbind, чтобы избавиться от mousemove;

var $button = $("ELEMENT HERE");

 $button.mousedown(function(){ 
      $(this).mousemove(function(){ 
       //Events here 
      }); 
     }).mouseup(function(){ 
      $(this).unbind("mousemove"); 
     }); 

Смежные вопросы