我想获得ng-click
ed元素的in-element(x,y)位置。使用clientX
和clientY
会被页面滚动转换。使用pageX
和pageY
不依赖于滚动,但它是绝对的。这四个属性属于$event
对象,可在ng-click
指令中使用。我如何计算元素x和y?
在jQuery中,我会做类似的事情:
$("#something").click(function(e){
var parentOffset = $(this).parent().offset();
//or $(this).offset(); if you really just want the current element's offset
var relX = e.pageX - parentOffset.left;
var relY = e.pageY - parentOffset.top;
});
但是现在,我想在angularjs中(即在postLink函数内的controller
,不内)。做这件事的好方法是什么?使用angular.element
做同样的事情是否安全?或者还有另一种计算我需要的值的方法吗?
编辑澄清:在控制器中,我会尝试:
$scope.onClick = function($event) {
//currently I can...
var pageX = $event.pageX;
var pageY = $event.pageY;
};
但我需要将这些坐标转换为与元素相关的坐标,因为这些元素是绝对的。考虑适当的HTML:
<div ng-click="onClick($event)">Nestor Kirchner</div>
答案 0 :(得分:5)
这应该让你开始:
$scope.doClick = function(event){
var x = event.x;
var y = event.y;
var offsetX = event.offsetX;
var offsetY = event.offsetY;
// you have lots of things to try here, not sure what you want to calculate
console.log(event, x, y, offsetX, offsetY);
};
和HTML:
<div ng-click="doClick($event)"></div>
请说明您要计算的内容?一些例子?
答案 1 :(得分:0)
它不适用于mozilla firefox。 为了使用mozilla,
var offsetX = event.originalEvent.layerX;
var offsetY = event.originalEvent.layerY;