$('.test').click(function(){
$('.act').removeClass('act');
$(this).addClass('act');
});

$('#btn').mousedown(function(){
$('.act').insertBefore($('.act').prev());
});
.test{
cursor:pointer;
}

.act{
background:gold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='test'>323</div>
<div class='test'>525</div>
<div class='test'>727</div>
<div class='test'>929</div>
<div class='test act'>453</div>
<br>
<button id='btn'>CLICK</button>

Удерживая кнопку нажатой, мне нужно продолжить, чтобы act переместился наверх, не нажимая снова и снова.

Как это сделать?

1
user7461846 14 Сен 2018 в 14:01

2 ответа

Лучший ответ

Используйте setInterval на mousedown, затем clearInterval на mouseup:

$('.test').click(function(){
$('.act').removeClass('act');
$(this).addClass('act');
});

var intervalId;
$('#btn').mousedown(function(){
    intervalId = setInterval(function() {
        $('.act').insertBefore($('.act').prev());
    }, 500);
}).mouseup(function() {
    clearInterval(intervalId);
});
.test{
cursor:pointer;
}

.act{
background:gold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='test'>323</div>
<div class='test'>525</div>
<div class='test'>727</div>
<div class='test'>929</div>
<div class='test act'>453</div>
<br>
<button id='btn'>CLICK</button>
1
Renan Araújo 14 Сен 2018 в 11:28
 $('#btn').mousedown(function () {
        var currentIdx = $(".act").index();
        while (currentIdx != 0) {
            $('.act').insertBefore($('.act').prev());
            currentIdx = $(".act").index();
        }
    });
-1
Arun Kumar 14 Сен 2018 в 11:16