jQuery <area /> appendTo在IE7中不起作用

时间:2010-07-21 21:13:17

标签: jquery html internet-explorer-7

我有以下代码在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。点击事件不会发生在那里。

3 个答案:

答案 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();