2010-10-07 122 views
0

我有一個奇怪的jQuery.offset()問題。jQuery:偏移問題

組件正在分層並取消下面鏈接的功能。上層是透明的和空的。

我的解決方案是遍歷所有鏈接(全部爲a元素),獲取它們的位置(頂部,左側,高度和寬度值)和href,並在同一位置創建一個新的a元素,放置在上層。

問題:此方法適用於四個鏈接中的三個。在一種情況下,新元素位於約120px的頂部,但左側的大小和偏移量都很好。任何想法在最後一個?

$("#container A").each(function(index){ 
    var top = $(this).offset().top; 
    var left = $(this).offset().left; 
    var width = $(this).width(); 
    var height = $(this).height(); 
    var href = $(this).attr("href"); 

    $('<A id="layer'+index+'"></A>').addClass("overlayer").css("left", left).css("top", top).css("width", width).attr("href", href).css("height", height).appendTo('#toplayer'); 
} 

#container與所有鏈接下層,#toplayer是上層。

爲.overlayer的CSS類:

.overlayer { 
    background-color: #cc00cc; 
    position: absolute; 
    z-index: 10; 
    cursor: hand; 
} 
+2

'.offset()'是相對於文檔的,你確定有問題的元素不在相對容器中嗎? – 2010-10-07 10:37:47

+0

沒有任何元素被定位爲相對。 #container和所有新的A元素被定位爲絕對。 – Gerrit 2010-10-07 11:04:33

+0

哪個鏈接定位不正確? – lnrbob 2010-10-07 17:41:20

回答

0

如果browser support for pointer-events: none是配不上你,你可以使用你的上部覆蓋層,而不是JS黑客。

一些不支持它的較老的IE有一個「功能」,你可以點擊通過框沒有你可能會使用的背景。