如何将元素移动到鼠标位置

时间:2015-02-01 20:05:16

标签: javascript jquery html

当用户点击文档时,我正在尝试移动元素,但是元素正在移动到偏移位置。单击时如何删除偏移量?我试图让元素移动到鼠标的确切位置,我该怎么做?我需要使用.offset()功能吗?如果是这样,我该怎么做?

HTML

Player Name:  <input type="text" name="name" id="name" /><br>
<button name="submt" id="meh">Submit</button>

JS

$(document).ready(function(){
    $(this).on("click", function(e){
        var x = e.pageX;
        var y = e.pageY;
        $("#meh").css("marginLeft", x);
        $("#meh").css("marginTop", y);
    })
})

3 个答案:

答案 0 :(得分:1)

绝对可以更容易地设置其位置并使用左侧和顶部偏移而不是边距来控制它:

$(document).ready(function() {
  $(this).on("click", function(e) {
    var x = e.pageX;
    var y = e.pageY;
    var el = $("#meh");
    el.css('position', 'absolute');
    el.css("left", x);
    el.css("top", y);
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Player Name:
<input type="text" name="name" id="name" />
<br>
<button name="submt" id="meh">Submit</button>

否则,您需要根据前面的元素计算偏移量(因为每次点击后按钮的偏移量都会改变)。

答案 1 :(得分:1)

改为使用left和top,同时确保使用绝对或相对定位:

$(document).ready(function(){
    $(this).on("click", function(e){
        var x = e.pageX;
        var y = e.pageY;
        $("#meh").css("left", x);
        $("#meh").css("top", y);
    })
})

答案 2 :(得分:0)

<div class="soccer-field">
<div class="ball"></div>
</div>

var container = document.querySelector(".soccer-field");
container.addEventListener('click', function (event) {
  var x = event.clientX;
  var y = event.clientY;
  var ball = document.querySelector(".ball");
  ball.style.position = "absolute";
  ball.style.left = `${x}px`;
  ball.style.top = `${y}px`;
})