使CSS定位仅在onclick上更改一次

时间:2012-10-08 14:06:42

标签: jquery html

代码:

    $(document).ready(function(){
    $("#main_div").bind('click', function(e){
    var x = event.pageX-document.getElementById("main_div").offsetLeft;
    var y = event.pageY-document.getElementById("main_div").offsetTop;


    if(...)
    {
    $("#container-5").css({"top":y,"left":x});
    $(this).unbind('click');
    e.stopPropagation();

    }
    else if(...)
    {

    ....

    });
 });

当我点击main_div时,它会检查是否有功能并继续。容器-5的Css也改变了。现在一旦css被更改,我不希望它继续改变main_div点击。所以我试过$(this).unbind('click');但是这没有用,因为我希望main_div被点击多次,因为我可以执行其他功能。帮助真的很感激。

2 个答案:

答案 0 :(得分:3)

另一种方式,也许是更优雅的方式,只使用jQuery的.one()方法触发onclick处理程序一次。您可以按如下方式实现它:

$("#main_div").one('click', function(e) {
    //the rest of your code
});

请注意,这可以为您节省至少4行代码!

答案 1 :(得分:1)

只需在回调函数中添加一个额外的if语句,该语句第一次为true,之后永远为false:

var hasBeenClicked = false;
$("#main_div").bind('click', function(e){
    if(!hasBeenClicked){
        hasBeenClicked = true;
        ...
        //the rest of your code
        ...
    }
});