Javascript 获得并设置顶部位置
我正在使用hammer.js创建一个基本的触摸友好型移动站点。我已经用一个负的顶部位置隐藏了顶部菜单,双击后它将使用css3转换显示。然而,我希望它在第二次双击时再次隐藏 我曾尝试使用if/else调用top position,然后相应地重新设置它,但我无法让它工作,有人知道我哪里出错了吗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
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应该在事件处理程序中,而不是在事件处理程序之外?