Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获得并设置顶部位置_Javascript_Jquery_Hammer.js - Fatal编程技术网

Javascript 获得并设置顶部位置

Javascript 获得并设置顶部位置,javascript,jquery,hammer.js,Javascript,Jquery,Hammer.js,我正在使用hammer.js创建一个基本的触摸友好型移动站点。我已经用一个负的顶部位置隐藏了顶部菜单,双击后它将使用css3转换显示。然而,我希望它在第二次双击时再次隐藏 我曾尝试使用if/else调用top position,然后相应地重新设置它,但我无法让它工作,有人知道我哪里出错了吗 var t = $("#topbar"); var position = t.position(); $sw.on('doubletap', function(event) { event.prev

我正在使用hammer.js创建一个基本的触摸友好型移动站点。我已经用一个负的顶部位置隐藏了顶部菜单,双击后它将使用css3转换显示。然而,我希望它在第二次双击时再次隐藏

我曾尝试使用if/else调用top position,然后相应地重新设置它,但我无法让它工作,有人知道我哪里出错了吗

var t = $("#topbar");
var position = t.position();

$sw.on('doubletap', function(event) {
    event.preventDefault();
    if (position.top == '-55px') {
        $('#topbar').css("top", "0");
    }
    else {
        $('#topbar').css("top", "-55px")
    }
});
网址是

谢谢你可以试试这个:

var t = $("#topbar");
var position = t.offset();

$sw.on('doubletap', function(event) {
    event.preventDefault();
    if (position.top == '-55px') {
        $("#topbar").offset({ top: "0"});
    }
    else {
        $('#topbar').offset({ top: "-55px"});
    }
}​
您可以尝试以下方法:

var t = $("#topbar");
var position = t.offset();

$sw.on('doubletap', function(event) {
    event.preventDefault();
    if (position.top == '-55px') {
        $("#topbar").offset({ top: "0"});
    }
    else {
        $('#topbar').offset({ top: "-55px"});
    }
}​

问题可能出在这条线路上

if (position.top == '-55px')
如果我没有弄错的话,.top属性是数字的,因此您可以将代码更改为

if (position.top == -55)
或者变得更加防御性

if (position.top < 0)

问题可能出在这条线路上

if (position.top == '-55px')
如果我没有弄错的话,.top属性是数字的,因此您可以将代码更改为

if (position.top == -55)
或者变得更加防御性

if (position.top < 0)
获取一个HTMLElement的顶部位置

这可能有助于

获得一个HTMLElement的最高位置


可能会有帮助

这已经解决了我的第一个问题,整个事情不起作用,所以非常感谢你,但是一旦菜单出现,再次双击隐藏它就没有任何作用了?@TimWilkinson Check@sawe的回答。此外,还可以将console.log position.top;在事件内部,检查给定时间的值是什么以及它是如何显示的。当然,您可能希望将其更改为“单击事件”,以便在桌面中进行测试。它设置为将鼠标单击识别为浏览器测试的触摸事件。仍然无法再次隐藏菜单。是否有办法在每次脚本运行后重置变量?@TimWilkinson我只是在写这个,但不能再编辑我的评论了。虽然我可以更新我的链接,但如果你还没有看到上面的评论,请查看。您的位置变量在事件之外。因此,如果你将变量放在事件中,它会在每次触发事件时检查偏移量。这解决了我的第一个问题,即整个事件不起作用,非常感谢,但是一旦菜单出现,再次双击隐藏它不会起任何作用?@TimWilkinson Check@sawe的答案。此外,还可以将console.log position.top;在事件内部,检查给定时间的值是什么以及它是如何显示的。当然,您可能希望将其更改为“单击事件”,以便在桌面中进行测试。它设置为将鼠标单击识别为浏览器测试的触摸事件。仍然无法再次隐藏菜单。是否有办法在每次脚本运行后重置变量?@TimWilkinson我只是在写这个,但不能再编辑我的评论了。虽然我可以更新我的链接,但如果你还没有看到上面的评论,请查看。您的位置变量在事件之外。因此,如果将变量放在事件内部,它会在每次触发事件时检查偏移量。我是否缺少某些内容或position=t。position应该在事件处理程序中,而不是在事件处理程序之外?我是否缺少某些内容或position=t。position应该在事件处理程序中,而不是在事件处理程序之外?