1

我有一个主 div,我想在单击它时捕获的坐标上放置更多 div。它工作正常,它改变了 div 的顶部和左侧位置,但问题是当我再次单击主 div 时,它会拖动第一次单击时已经显示的 div。我希望在第一次单击时显示的 div 在我再次单击主 div 时停止移动。帮助真的很感激。

代码 :

    $(document).ready(function(){
    $("#main_div").click(function(event, ui){

    var x = event.pageX-document.getElementById("main_div").offsetLeft;
    var y = event.pageY-document.getElementById("main_div").offsetTop;

    document.pointform.form_x.value = x;
    document.pointform.form_y.value = y;


    $("#container-5").css({"top":y,"left":x});
    $("#EDate").css({"top":y,"left":x});

 });
 });
4

1 回答 1

3

如果您只想删除事件处理程序,可以使用以下unbind()方法:

$(document).ready(function(){
    $("#main_div").click(function(event, ui){

    var x = event.pageX-document.getElementById("main_div").offsetLeft;
    var y = event.pageY-document.getElementById("main_div").offsetTop;

    document.pointform.form_x.value = x;
    document.pointform.form_y.value = y;


    $("#container-5").css({"top":y,"left":x});
    $("#EDate").css({"top":y,"left":x});

    // and here we unbind it
    $(this).unbind('click');

   });
});

根据您的评论:

$(document).ready(function(){
    $("body").click(function(event, ui){
    var i = 0;
    if($(this).data("index"))
      i = $(this).data("index");
    else
      $(this).data("index", i = 0);

    var x = event.clientX;
    var y = event.clientY;


    if($("#container-" + i)[0])
        $("#container-" + i).css({"top":y,"left":x});
    else
        $(this).unbind("click");


    $(this).data("index",i+1);


   });
});​

演示: http: //jsfiddle.net/Sn9Xx/show
来源:http: //jsfiddle.net/Sn9Xx/

于 2012-10-08T07:50:14.677 回答