我选择了一种与 Deceze 所说的不同的方法。
这是概述该过程的工作jsFiddle
我真的超越了,主要是因为 deceze 真的让我思考。
这是表的结构。出于我们的目的,我们将表命名为“coords”
-------------------------
| id | xpos | ypos |
-------------------------
| 0 | 53 | 74 |
| 1 | 217 | 168 |
-------------------------
这是位于图像顶部的“覆盖”的点击功能。->
$("#imgOver").click(function(event) {
var parentOffset = $(this).parent().offset();
var defTop = event.pageY - parentOffset.top - 25;
var defLeft = event.pageX - parentOffset.left - 25;
$(this).append('<div class="addLink" style="top:'+defTop+'px;left:'+defLeft+'px;"> Link </div>')
$.ajax({
type: 'POST',
url: 'hotspots.php',
data: {'top' : defTop, 'left': defLeft }
});
});
在上面,我们将顶部和左侧的值发布到我们的文件中,以便解析并插入到数据库中。我们也可以在这里建立更多的关系,这只是冰山一角。
我们定义hotspots.php
为服务/处理我们的坐标请求的文件。
这是在页面加载时获取坐标并将它们放入图像中的功能。
$.ajax({
type: 'GET',
url: 'hotspots.php',
data: 'hotspots=true',
success: function(data){
$(data).appendTo('#imgOver');
$.each($('#imgOver').find('.addLink'), function(i,obj){
var coordData = $(this).attr('rel');
coordData = coordData.replace(' ', '');
coordData = coordData.split('/');
$(obj).css({'top' : coordData[1]+'px', 'left' : coordData[0]+'px' });
});
}
});
这是我们用来插入和解析从数据库中检索到的数据的 PHP 代码。
if(!empty($_POST['top']) && !empty($_POST['left'])){
$qstr = "INSERT INTO coords(xpos, ypos) VALUES('".$_POST['left']."', '".$_POST['top']."')";
$q = mysql_query($qstr);
}
if(!empty($_GET['hotspots']) && $_GET['hotspots'] == 'true'){
$qstr1 = "SELECT * from coords";
$q1 = mysql_query($qstr1);
while($row = mysql_fetch_array($q1)){
?>
<div class="addLink" rel="<?php echo $row['xpos'] ?> /<?php echo $row['ypos'] ?>"> Link </div>
<?php
}
}
请注意,这只是一个示例,并非用于生产用途。显然,您将拥有超过 1 张图像,并且需要建立关系。此外,我使用的 SQL 语句很容易受到攻击,应该保护以供实时使用。
祝你好运!