jQuery我想做一个,点击新建出来一个div,鼠标按下拖动div也跟着移动,代码哪里错了

<!DOCTYPEhtml><html><headlang="en"><metacharset="UTF-8"><title></title></head><body><... <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<input id="found" type="button" value="新建">
<span id="aa"></span>
</body>
<script type="text/javascript"src="jquery-2.1.3.min.js"></script>
<script type="text/javascript">
t=true;
$("#found").click(function(){
$("body").append("<div style='width: 200px;height: 200px;background-color:#ccc;position: absolute;' id='run'>按住我移动</div>")
$(this).mouseup(function(){
t=false;
})
$("#run").mousedown (function(e){
$(this).mousemove(function(e){
if(t)
{
$("#aa").html(e.pageX+","+ e.pageY)
$(this).css({"left":e.pageX+5+"px","top":e.pageY+5+"px"})
}
})
})
})

</script>
</html>
展开
 我来答
北方计算机学校
2015-04-09 · TA获得超过377个赞
知道小有建树答主
回答量:51
采纳率:100%
帮助的人:63.5万
展开全部

你的代码中有以下几处问题:

    t=true;
    $("#found").click(function(){
        $("body").append("<div style='width: 200px;height: 200px;background-color:#ccc;position: absolute;' id='run'>按住我移动</div>")
        
        // 这里的 this 代表 #found 元素,
        // 所以应该改为 $("#run")
        $(this).mouseup(function(){
            // 只要鼠标松开一次,#run 就不能再被拖动了!只能拖动一次吗?
            t=false;
        })
        $("#run").mousedown (function(e){
            // 每次在 #run 上按下鼠标就会添加一次鼠标移动事件!
          $(this).mousemove(function(e){
              if(t)
              {
                  $("#aa").html(e.pageX+","+ e.pageY)
                  // 下面这句应该改为 X、Y 都减 5
                  $(this).css({"left":e.pageX+5+"px","top":e.pageY+5+"px"})
              }
          })
        })
    })


根据你的要求,我写了一段代码,你可以参考一下:

$("#found").click(function(){
    var t=false, x, y;
    $("body").append(
        $("<div style='width: 200px;height: 200px;background-color:#ccc;position: absolute;' id='run'>按住我移动</div>")
        .mouseup(function(){
            t=false;
        }).mousedown (function(e){
            x=e.offsetX;
            y=e.offsetY;
            t=true;
        }).mousemove(function(e){
            if(t)
            {
                $("#aa").html(e.pageX+","+ e.pageY)
                $(this).css({"left":e.pageX-x+"px","top":e.pageY-y+"px"})
            }
        })
    )
})
追问
已经做好了   谢谢
追答
不用谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式