2013-05-07 85 views
0

我有打算在文档中创建块阵列。它们充当地图上的交互点。 (即使世界的地图图像作为背景和块是正上方的房屋在地图上)jQuery的悬停和点击IE浏览器不工作

for(blocks.length) 
    var newblock = $("<span data-unit='" + blocks[i].unitnum + "' class='unitwrap' />"); 
    .... 
    newblock.click(function() {...}); 
    newblock.hover(function() { 
     .... 
    }, function() { 
     .... 
    }); 
} 

在事件函数我的背景图像添加到跨度元件。在悬停或点击房屋时创建效果。这一切的伟大工程......

除IE

难道这些jQuery函数不工作在IE(悬停和点击),或者是别的东西?

+1

jQuery version? IE版本?创建完'newblock'后,你在做什么? – Langdon 2013-05-07 06:09:50

+0

你也是一个{后您的声明中缺少。你应该发布小提琴,也许你应该写: for(var i in blocks.length) – OctoD 2013-05-07 06:12:39

+0

你的'for'循环没有任何分号 - 是你的实际代码吗? – 2013-05-07 06:14:36

回答

0

为了表明跨度,我给CSS display:inline-block这里的高度和宽度。
与jQuery创建这个<span>元素后,它是在DOM(这里例如在'body')追加这样的地方盘旋,然后点击可与浏览器进行交互mousehandler(不可见元素不火mouseevents,逻辑^^),
后我的媒体链接给newblock元素作为选择收拾jQuery的$(newblock),帮助其查找机制来知道在哪里的事件监听绑定到DOM

你不能绑定事件监听器直接到document.createElement('span')这相当于$('<span />'),你永诺需要把它放在你的DOM的,换句话说,你不能绑定监听器到javascript本身(变量),但对象中的DOM

而只是检查出blocks的对象结构我做了一个小例子。

<style> 
    .unitwrap {height:40px; width:40px; display:inline-block; border: 1px solid #f00} 
</style> 
<script type="text/javascript"> 
    var blocks=[{"unitnum":2},{"unitnum":4}]; 
    var l=blocks.length; 
    for (var i=0;i<l;i++) { 
     var newblock = $("<span data-unit='" + blocks[i].unitnum + "' class='unitwrap' />"); 
     $('body').append(newblock); 
     $(newblock).click(function(){ 
     console.log('yeah clicked'); 
     }); 
     $(newblock).hover(function(){ 
     console.log('plop hovered'); 
     }); 
    } 
</script> 
相关问题