我是javascript的新手,所以如果我问的话很明显,请原谅。
我正在使用Sennajs作为我的个人项目。我有gallery example之类的问题。单击链接时,会使页面跳转到顶部。我曾经使用jquery中的代码来修复它。然而,它也阻止了塞纳的工作。
$('a').click(function(e) {
// do something
return false;
e.preventDefault();
});
非常感谢任何帮助。
答案 0 :(得分:1)
事实证明,您可以使用app.setUpdateScrollPosition(false)
避免在每次SennaJS导航后跳到页面顶部:
var app = new senna.App();
app.setUpdateScrollPosition(false);
// ...your code here...
注意:自从我在了解app.setUpdateScrollPosition(false)
之前编写此解决方案时,此解决方案不必要地过于复杂。
您可以在导航前保存当前滚动位置,并在导航后滚动到正确位置,而不是阻止SennaJS执行:
var app = new senna.App();
// ...your code here...
function getScrollTop() {
// Taken from Engineer's answer:
// https://stackoverflow.com/questions/11193453/find-the-vertical-position-of-scrollbar-without-jquery#11193613
return (window.pageYOffset !== undefined) ? window.pageYOffset :
(document.documentElement || document.body.parentNode || document.body).scrollTop;
}
var scrollTop = getScrollTop();
app.on('beforeNavigate', function(event) {
scrollTop = getScrollTop();
});
app.on('endNavigate', function(event) {
window.scrollTo(0, scrollTop);
});
有关滚动条件和JavaScript的详细信息,请参阅Engineer的answer here和MDN's window.scrollTo()
documentation。
有关SennaJS生命周期事件的更多信息,请参阅the SennaJS documentation
注意:这可能是SennaJS中的一个错误,所以我创建了a bug report (#184)。
答案 1 :(得分:0)
在实际调用return
之前,您preventDefault
。以下内容适用:
$(function(){
$('a').click(function(e) {
e.preventDefault();
return false;
});
});
答案 2 :(得分:0)
您的代码无法正常工作的原因是您在执行任何操作之前return
。
$('a').click(function(e) {
e.preventDefault();
// do something
return false;
});
所以,先防止正常行为后再做一些事情。