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

Проверьте, если mousedown с выражением if?

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

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

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

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

4b9b3361

Ответ 1

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

var down = false;
$(document).mousedown(function() {
    down = true;
}).mouseup(function() {
    down = false;  
});
$("#example").mouseout(function() {
    if(down) {
        console.log("down");  
    } 
    else {
        console.log("up");   
    }
});

Здесь приведено рабочий пример.

Ответ 2

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

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

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

Ответ 3

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>

Ответ 4

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

Ответ 5

Проверьте это. 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');
});