我想用鼠标点击从div获得X/Y坐标。用鼠标点击获取X/Y坐标
现在我想收集更多的X/Y坐标,不只是一个。 所以如果我在div中点击两次或更多次,我想列出div下的坐标。
<div>"click"
"click"</div>
------------------------
coordinates 1: X/Y
coordinates 2: X/Y
.
.
.
有谁知道我该怎么做?
我想用鼠标点击从div获得X/Y坐标。用鼠标点击获取X/Y坐标
现在我想收集更多的X/Y坐标,不只是一个。 所以如果我在div中点击两次或更多次,我想列出div下的坐标。
<div>"click"
"click"</div>
------------------------
coordinates 1: X/Y
coordinates 2: X/Y
.
.
.
有谁知道我该怎么做?
这里正是参观你的阵列你问了。
小提琴:http://jsfiddle.net/ZZEk8/118/
添加到HTML:
<span class="log"></span>
JS:
var clicks = [],
updatedClicks = "";
$('.clickable').on('click', function (ev) { //We don't use .bind() after jQuery 1.7, use .on() now.
var $div = $(ev.target);
var $display = $div.find('.display');
var offset = $div.offset();
var x = ev.clientX - offset.left;
var y = ev.clientY - offset.top;
$display.text('x: ' + x + ', y: ' + y);
clicks.push(x + "/" + y);
updatedClicks += "coordinates" + " " + clicks.length + ":" + " " + clicks[clicks.length -1] + "<br />";
$('.log').html(updatedClicks);
});
UPDATE: OP请求的方式来限制COORDS和删除一个。
小提琴:http://jsfiddle.net/ZZEk8/125/
var clicks = [],
updatedClicks = [],
limit = 5;
$('.clickable').on('click', function (ev) {
var $div = $(ev.target);
var $display = $div.find('.display');
var offset = $div.offset();
var x = ev.clientX - offset.left;
var y = ev.clientY - offset.top;
$display.text('x: ' + x + ', y: ' + y);
//Stops adding at limit
if (clicks.length < limit){
addCoord(x,y);
}
});
$('.delete').on('change', function(ev) {
if(clicks.length){
var selection = this.value -1;
deleteCoord(selection);
} else { //If there are no coords to delete run this
return false;
}
});
function addCoord (x,y){
clicks.push(x + "/" + y);
updatedClicks.push("Coordinates" + ":" + " " + clicks[clicks.length -1] + "<br />");
$('.log').html(updatedClicks.join(" "));
}
function deleteCoord(selection) {
clicks.splice(selection, 1);
updatedClicks.splice(selection, 1);
$('.log').html(updatedClicks.join(" "));
}
cool!非常感谢你jonny!棒极了! :) – paul 2013-03-22 08:27:23
在您的现有元素之后添加一个新元素<div id="log"></div>
。
在你的JavaScript代码添加
document.getElementById("log").innerHTML += "<br/>Coordinates: X=" + x + "; Y=" + y;
在你的jsfiddle例如:
$display.html($display.html() + '<br/> x: ' + x + ', y: ' + y);
嘿knagis!谢谢! :) – paul 2013-03-21 15:09:55
如果你想保存坐标,你可以收集他们在一个数组,像这样:
//Declare an array with 0 length
var arr = new Array(0);
$('.clickable').bind('click', function (ev) {
var $div = $(ev.target);
var $display = $div.find('.display');
var offset = $div.offset();
var x = ev.clientX - offset.left;
var y = ev.clientY - offset.top;
$display.text('x: ' + x + ', y: ' + y);
//increase the length of array before insert the value of coords
arr.length = arr.length+1;
//insert the value
arr[arr.length-1] = "coordinates" + arr.length + ":" + x +"/" + y;
});
然后,操作坐标,你可以与环
我们不使用.bind()因为jQuery的1.7,使用。对()代替。 – 2013-03-21 14:45:56
你想如何限制它?你想让计数重新开始并删除以前的计数?或者你想让它更新最后一个,然后离开?或者只是停止发布限制? – 2013-03-21 16:03:38
只是停止张贴在限制。即极限= 5,所以只显示5个坐标。删除坐标并再次设置限制的功能也会很酷。 – paul 2013-03-21 16:11:58