Проверьте, если mousedown с оператором if? - PullRequest
12 голосов
/ 09 октября 2011

Можно ли сделать что-то вроде этого:

if ($(this).mousedown() == true) {

Я думал, что это сработает, но это не так.

Дополнительные сведения: Я пытаюсь проверить, нажата ли кнопка мыши, когда мышь оставляет определенный DIV, поэтому, если человек удерживает кнопку мыши нажатой, когда его мышь покидает div , сделай это, иначе сделай это.

Ответы [ 5 ]

20 голосов
/ 09 октября 2011

Самый простой способ, который я могу придумать, - это связать mousedown и mouseup прослушиватели событий с document и соответствующим образом обновить глобальную переменную.В событии mouseout вашего элемента вы можете проверить состояние этой переменной и действовать соответствующим образом.(Примечание: это предполагает, что вас не волнует, была ли нажата мышь или нет на div или нет ... вам придется уточнить свой вопрос по этому поводу).* Вот рабочий пример из вышеперечисленного.

6 голосов
/ 12 августа 2013

Отвечая на ваш оригинальный вопрос, да, это возможно.Когда событие mousedown запускается над элементом, элемент становится активным и выбирается псевдоселектором: active.В jQuery, если ничего не выбрано, возвращается пустой массив, мы можем использовать это в наших интересах в сочетании со свойством массива .length и превращать активный псевдо-селектор в проверку, чтобы увидеть, находится ли мышь над определенным элементом или нет.Итак:

if ( $('#id:active').length ) {
  //do something
}

Проверка, была ли мышь нажатой над определенным элементом в данный момент времени, является другим событием и не соответствует названию этого вопроса и должна бытьизменил я мог бы добавить.Google привел меня сюда, и этот ответ для тех, кто неизбежно последует за ним.

1 голос
/ 09 октября 2011

http://jsfiddle.net/5HrWF/

как то так?

Код:

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <p>Press mouse and release here.</p>

<script>
    $("p").mouseup(function(){
      $(this).append('<span style="color:#F00;">Mouse up.</span>');
    }).mousedown(function(){
      $(this).append('<span style="color:#00F;">Mouse down.</span>');
    });

</script>

</body>
</html>
0 голосов
/ 26 февраля 2015

Проверьте это.http://jsfiddle.net/b1Lzo60n/

Mousedown запускает таймер, который проверяет, продолжает ли мышь работать в течение 1 секунды.

<button id="button">Press me</button>
<div id="log"></div>

Код:

var mousedown = false;
var mousedown_timer = '';
$('#button').mousedown(function(e) {
    mousedown = true;
    $('#log').text('mousedown...');
    mousedown_timer = setTimeout(function () {
        if(mousedown) {
            $('#log').text('1 second');
        }
    }, 1000);
}).mouseup(function(e) {
    mousedown = false;
    clearTimeout(mousedown_timer);
    $('#log').text('aborted');
});
0 голосов
/ 09 октября 2011

Хорошо, лучший вариант, который я могу вам предложить, это: http://jsfiddle.net/qK8rr/2/

...