2013-05-07 99 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> 
相關問題