2013-04-03 70 views
2

我想用链接图创建图像。该地图将包含许多必须经常更换的区域。而不是每隔几秒钟重新创建区域,我只想在用户真正点击图像时创建它们。实时创建链接区域

我希望这可以通过创建一个mousedown事件被触发后的区域来实现 - 但这似乎不起作用(点击新创建的区域未被处理)。

我的JavaScript代码到目前为止(fiddle):

$(document).ready(function() { 
    $('#overlayDiv').mousedown(function() { 
     $('#image').click(function() { 
      $('#linkmap').children().remove(); 
      $(document.createElement('area')) 
       .attr("shape", "rect") 
       .attr("onclick", "alert('click');") 
       .attr("coords", "0,0, 400,400") 
       .appendTo('#linkmap'); 
     }); 
    }); 
}); 

A “工作流程” 的应该发生什么

  1. 点击图片
  2. 上现有的所有领域都将被删除
  3. 该地区重新创建
  4. 点击已区域
+0

请删除内联属性处理程序,并使用'。点击(函数(E){警报(e.type);})'代替 – Bergi 2013-04-03 23:08:57

+0

看来你比较想要[这](http://jsfiddle.net/gFVVh/2/)(虽然它不工作) – Bergi 2013-04-03 23:12:18

+0

你是对的,它不工作。我会为我的问题添加一个“工作流程” – Christopher 2013-04-04 11:27:00

回答

0

这不是为你工作处理,因为你没有在地图中标记的名称属性。

退房更新的小提琴:http://jsfiddle.net/gFVVh/1/

<img src="https://www.google.de/logos/2013/henry_van_de_veldes_100th_birthday-1402005-hp.jpg" usemap="#linkmap" id="image" /> 
<map id="linkmap" name="linkmap"></map> 
+1

“点击”不会在第一次点击时出现。之后,该区域已经存在,并且似乎不会被删除,因此弹出窗口会出现。 – Christopher 2013-04-04 11:25:45

+0

不,它没有,因为那不是你编程的方式。 mousedown正在图像上创建点击事件,从而创建该区域。所以,它读取的方式是:“在用户在'overlayDiv'上做了一个mousedown之后,在'image'上创建点击事件,这会删除'linkmap'的子元素,然后在'linkmap'内创建一个新区域,其中有点击事件'alert(click)'“。如果您想发送“点击”,请在定义onClick事件后使用$(element).click()。 – 2013-04-04 15:11:56