0

コード:

    $(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を何度でもクリックしたいので、これは役に立ちません。本当に感謝しています。

4

2 に答える 2

3

もう1つの方法は、おそらくもっと洗練された方法で、jQueryの.one()メソッドを使用してonclickハンドラーを1回だけ起動することです。次のように実装します。

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

これにより、少なくとも4行のコードが節約されることに注意してください。

于 2012-10-08T14:41:17.493 に答える
1

ifコールバック関数内に、最初はtrueで、その後は永久にfalseになるステートメントを追加するだけです。

var hasBeenClicked = false;
$("#main_div").bind('click', function(e){
    if(!hasBeenClicked){
        hasBeenClicked = true;
        ...
        //the rest of your code
        ...
    }
});
于 2012-10-08T14:12:19.873 に答える