0

我有一个奇怪的 jQuery.offset() 问题。

组件被分层并带走了下面链接的功能。上层是透明的和空的。

我的解决方案是遍历所有链接(所有a元素),获取它们的位置(顶部、左侧、高度和宽度值)和 href,并a在相同位置创建一个新元素,放置在上层。

问题:此方法适用于四个链接中的三个。在一种情况下,新元素位于距顶部约 120 像素的位置,但左侧的大小和偏移量都很好。对最后一个有什么想法吗?

$("#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;
}
4

1 回答 1

0

如果浏览器对您的支持pointer-events: none足够好,您可以将其用于上层覆盖层,而不是 JS hacks。

一些不支持它的旧 IE 具有“功能”,您可以单击没有背景的框,您可能会使用它。

于 2015-05-11T08:00:09.417 回答