我正在尝试从Cookie中恢复一个值,该值位于用户点击的Y轴上。然后我想从该点击中找到父<h2>
(如果有帮助,所有<h2>
都是<div class="_bdnable_">
的第一个孩子)。以下是我到目前为止的情况:
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 :(得分:0)
如果你已经拥有了来自cookie的点击的y坐标,为什么不简单地比较所有H2的y位置并选择下一个“更高”的位置?您的方法看起来比较用户是否直接点击H2而不是下面的文章/按钮?
只是一个想法 - 不要评价它的风格,认为它的格言凌乱:
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;
}
}
或者我说错了你?