在按住鼠标键的同时继续上下移动元素

时间:2019-11-22 15:57:36

标签: javascript jquery

这里一切正常,但是我需要在按下鼠标按钮的同时不断向上act上下移动,而不必重复单击。

有帮助吗?

$('button').on('click', function(){
	let a = $('.act');
	a.insertBefore(a.prev());
});

$('button').on('contextmenu', function(e){
	e.preventDefault();
	let a = $('.act');
	a.insertAfter(a.next());
});
.act{background:gold;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<div class='title act'>LOREM</div>
<div class='title'>IPSUM</div>
<div class='title'>DOLOR</div>
<div class='title'>SIT</div>
<div class='title'>AMET</div>
</div>
<br>
<button>CLICK</button>

2 个答案:

答案 0 :(得分:1)

我做了一个小提琴来说明:

https://jsfiddle.net/10cgxohk/

html:

<p class="">x</p>

css:

.move {
  animation: MoveUpDown 1s linear infinite;
  position: relative;
  left: 0;
  bottom: 0;
}

@keyframes MoveUpDown {
  0%, 100% {
    bottom: 0;
  }
  50% {
    bottom: 15px;
  }
}

javascript:

$('body').on('mousedown', function() {
    $('p').addClass('move');

  $('body').on('mouseup', function() {
    $('p').removeClass('move');
    $('body').off('mouseup');
    console.log('here');
  })
});

这真的很粗糙,如果您身上还有其他“ mouseup”回调,则会造成问题,但是如果您不必担心,那么它应该可以工作。 javascript将一个类添加到元素中,并且该类在css中动画化

答案 1 :(得分:1)

您将不得不使用鼠标事件来代替clickcontextmenu事件,这是一个示例:

let intervalId;
const a = $('.act');
$('button').on('mousedown', function(event) {
   function fn () {
    if (event.button == 0) {
      a.insertBefore(a.prev());
    } else if (event.button == 2) {
      a.insertAfter(a.next());
    }
    return fn;
  };
  intervalId = setInterval(fn(), 500);
});

$(document).on('mouseup', function(event) {
  clearInterval(intervalId);
});

$('button').on('contextmenu', function(event) {
  event.preventDefault();
});
.act {
  background: gold;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <div class='title act'>LOREM</div>
  <div class='title'>IPSUM</div>
  <div class='title'>DOLOR</div>
  <div class='title'>SIT</div>
  <div class='title'>AMET</div>
</div>
<br>
<button>CLICK</button>

在此示例中,我使用间隔使鼠标指针按下时每500毫秒移动一次元素,同时也防止了contextmenu事件的发生,因此上下文菜单不会消耗mouseup事件本身。

相关问题