2010-10-07 83 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有一个“功能”,你可以点击通过框没有你可能会使用的背景。