2012-11-11 166 views
-2

我正在研究一个函数来获取图像的选定点坐标并将其保存到变量。我需要的是选择两个点然后执行其他功能。 下面的代码对于获得点坐标的工作正常,但只对两点执行此功能?谢谢你的建议。点击2次后停止jQuery功能

$(".bg_image").click(function(e) { 
        var offset = $(this).offset(); 
        var relativeX = (e.pageX - offset.left); 
        var relativeY = (e.pageY - offset.top); 

        $('<div>', { 
         'class':'point', 
         'css': { 
          'position': 'absolute', 
          'left':  relativeX +'px', 
          'top':  relativeY +'px', 
          'width': '3px', 
          'height': '3px', 
          'background-color': '#fff' 
         } 
        }) 
        .appendTo('#output'); 
        console.log("X: " + relativeX + " Y: " + relativeY); 

       }); 

回答

1

您需要创建一个变量来计算用户在图像上执行的点击次数。

var count = 0; 

$(".bg_image").click(function(e) { 
    count++; 
    if (count <= 2) 
    { 
    //execute your code 
    } 
}); 
+0

这适用于交替点击!所以,你点击,它不会工作,下一次点击它的作品! –

+1

已更新我的代码 –

+0

@ vol7ron我用<=替换<。所以现在它必须工作两次 –

1

添加一个全局变量是这样的:

var clickCount = 0; 

每个当.click()被调用时,增加计数器。并检查值:

$(".bg_image").click(function(e) { 
    clickCount++; 
    if (clickCount > 2) 
     return false; 
    ... 
}); 
0

获取点击数是一个选项。另一个考虑是使用数组并获取数组的长度。

var coordinates = []; 


$(".bg_image").click(function(e) { 

    coordinates.push([relativeX,relativeY]); 

    // do some operation to make sure you didn't add the same coordinate twice 

    if (coordinates.length <= 2) 
    { 
    // execute your code 
    } 

}); 

其缺点是它可能执行速度稍慢(可能未察觉)。

好处是您正在存储您单击的位置,因此您可以将其用于代码的其他部分。例如,做分析,或执行距离计算。