Javascript Jquery悬停并在IE中单击“不工作”

Javascript Jquery悬停并在IE中单击“不工作”,javascript,jquery,css,Javascript,Jquery,Css,我有一个将在文档中创建的块数组。它们在地图上充当交互点。(以地图图像为背景,街区位于地图上房屋的正上方) 用于(块长度) var newblock=$(“”); .... 单击(函数(){…}); newblock.hover(函数(){ .... },函数(){ .... }); } 在事件函数中,我向span元素添加背景图像。在鼠标悬停或单击房屋时创建效果。这一切都很好 除了IE 这些Jquery函数在IE(鼠标悬停并单击)中不起作用吗?或者是其他功能吗?为了显示范围,我在这里给CSSdi

我有一个将在文档中创建的块数组。它们在地图上充当交互点。(以地图图像为背景,街区位于地图上房屋的正上方)

用于(块长度)
var newblock=$(“”);
....
单击(函数(){…});
newblock.hover(函数(){
....
},函数(){
....
});
}
在事件函数中,我向span元素添加背景图像。在鼠标悬停或单击房屋时创建效果。这一切都很好

除了IE


这些Jquery函数在IE(鼠标悬停并单击)中不起作用吗?或者是其他功能吗?

为了显示范围,我在这里给CSS
display:inline block
加上高度和宽度。
使用jQuery创建这个
元素后,它被附加到DOM中的某个地方(这里是
'body'
上的示例),因此悬停并单击可以与浏览器鼠标手柄交互(不可见的元素不触发鼠标事件,逻辑^^),
在我将您的allready元素作为选择器打包到jQuery
$(newblock)
之后,可以帮助其查找机制知道将EventListener绑定到DOM中的何处

您无法将eventListeners直接绑定到
document.createElement('span')
,这相当于
$('')
,您始终需要将它放在DOM中的某个位置,换句话说,您无法将侦听器绑定到javascript自身(变量),而是绑定到DOM中的对象

为了检查
块的对象结构,我做了一个很小的例子

<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>

.unitwrap{高度:40px;宽度:40px;显示:内联块;边框:1px实心#f00}
变量块=[{“unitnum”:2},{“unitnum”:4}];
var l=块体长度;

for(var i=0;ijQuery版本?IE版本?在创建了
newblock
之后,您对它做了什么?在for声明之后,您还缺少一个{。您应该发布一个fiddle,也许您应该编写:for(var i in blocks.length)你的
for
循环没有任何分号-这是你的实际代码吗?你检查控制台有没有错误吗?也许你的css没有显示跨度,所以你不能悬停它。
for
循环没有限制器。你使用
i
,它在这里没有定义。jQuery选择器不在
中,除了你
。append()
将新块元素立即放入DOM中的某个位置,否则它无法在之后应用工作。
。hover()
。click()
需要真正的选择器来绑定EventListener。
<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>