我有以下代码在IE8(和IE7在IE7兼容模式下)正常工作但在IE7中没有生成正确的结果
var areaId = "eventArea" + index;
var tempArea = $("<AREA id='" + areaId + "' shape='rect' coords='" + value.x + "," + value.y + "," + (parseInt(value.x) + parseInt(value.w)) + "," + (parseInt(value.y) + parseInt(value.h)) + "' >");
tempArea.appendTo($("map[name='wavImageMap']"));
$("#" + areaId).click(function() { alert('test'); });
在IE8上,这些HTML <AREA>
元素已成功创建和添加。但不是IE7。点击事件不会发生在那里。
答案 0 :(得分:0)
这可能不是问题,但我遇到了类似的问题并使用jQuery的live函数解决了它。像这样......
var areaId = "eventArea" + index;
var tempArea = $("<AREA id='" + areaId + "' shape='rect' coords='" + value.x + "," + value.y + "," + (parseInt(value.x) + parseInt(value.w)) + "," + (parseInt(value.y) + parseInt(value.h)) + "' >");
tempArea.appendTo($("map[name='wavImageMap']"));
$("#" + areaId).live('click', function() {
alert('test');
});
live()基本上确保事件附加到现在或将来存在的任何元素(例如,如果您动态创建元素)。
答案 1 :(得分:0)
过去我在IE中使用.appendTo()
时遇到了问题,我无法告诉你为什么;但是将它改为.append()
对我有用。
答案 2 :(得分:0)
这种情况下的问题不在于<area>
,而在于IE7将坐标转换为字符串的方式。使用value.x.toString()
代替value.x
可以解决问题
然后代码将如下所示:
var tempArea = $("<AREA id='" + areaId + "' shape='rect' >");
tempArea[0].coords = value.x.toString() + "," + value.y.toString() + "," + ((parseInt(value.x) + parseInt(value.w))).toString() + "," + ((parseInt(value.y) + parseInt(value.h))).toString();