2012-07-20 79 views
0

我想从cookie中恢复一个值,该cookie位于用户单击的Y轴上的某个位置。然后我想从该点击中找到父亲<h2>(如果有帮助,所有<h2>都是<div class="_bdnable_">的第一个孩子)。以下是我迄今为止:elementFromPoint()完整文档替代

var bookmarkLocation; 
function getBookmarkPos() { 
    if ($.cookie("bookmark-position") !== null) { 
     $(".bdnable").each(function(i) { 
      var scrollTopTop = $(this).offset.top; 
      var scrollTopBottom = $(this).offset.top + $(this).height(); 
      // var screenWidth = parseInt(screen.width/2); 
      // alert(screenWidth); 
      // var bookmarkPosition = parseInt($.cookie("bookmark-position")); 
      // alert(bookmarkPosition); 
      // var query = document.elementFromPoint(screenWidth, 50).nodeName; 
      // alert(query); 
      if ($.cookie("bookmark-position")>=scrollTopTop && $.cookie("bookmark-position")<=scrollTopBottom) { 
       bookmarkLocation = $(this).closest("div").children(":nth-child(1)").text(); 
      } 
     }); 


     if (bookmarkLocation == null) { 
      bookmarkLocation = "Unknown"; 
     } 
    } else { 
     bookmarkLocation = "No bookmark set"; 
    } 

    $("#bookmarklocationspan").html(bookmarkLocation); 
} 

在注释掉部分是我试图用getElementFromPoint,然后意识到,它只检查可见区域。不好,因为页面上的可滚动Y轴是1000像素高。

任何想法都非常感谢!

+0

你可以添加标记吗? – Tjkoopa 2012-07-20 12:08:15

回答

0

如果你已经有了cookie的点击的y坐标,为什么不简单比较所有H2的y位置并选择下一个“更高”的位置?你的方法看起来像是比较用户是否直接点击H2而不是下面的文章/按钮?

只是一个想法 - 不评分的风格,认为其prettey凌乱:

var $myH2 = $('h2'); 
var clickY = <COOKIE_VALUE>; 
var currentY = 0; 
var foundH2ID = ''; 
for (var i = 0; i < $myH2.length; i++) { 
var h2Y = $($myH2[i]).position().top; 
if (h2Y <= clickY && h2Y > currentY) { 
    currentY = h2Y; 
    foundH2ID = $myH2[i].id; 
} 
} 

或者,也许我把你错了吗?

+0

需要调整,但Mille Mercis !!!! – Walendas 2012-07-20 12:38:49

+0

不客气!当然,您可以自由修改代码:-) – OlafW 2012-07-20 13:16:22