2014-09-25 79 views
0

我有这个问题,当我点击锚,该页面重新加载,这是我想避免,即使我使用pushstate:trueBackboneJS pushState的防止页面重载

所以,我main.js里面我有:

Backbone.history.start({ pushState: true, root: App.ROOT }); 

$(document).on('click', 'a:not([data-bypass])', function (evt) { 

    var href = $(this).attr('href'); 

     if (href && href.indexOf('#') === 0) { 
      evt.preventDefault(); 
      Backbone.history.navigate(href, true); 
     } 
}); 

所以,我试图改变它像这里提到的Preventing full page reload on Backbone pushState - 但没有成功。

我使用BackboneJSNodeJSHandlebarsJS

是否有任何解决这个?

回答

0

pushState: true与单击链接时无法阻止加载完整页面,这只是一种更新浏览器地址栏中的url地址的方法。它应该防止链接的默认行为evt.preventDefault()

您提供的代码非常有选择性地应用evt.preventDefault(),因为根据您的代码,不会以#开头的链接工作就像链接通常预期会工作 - 重新加载该页面。

+0

当我在'if'语句之前加上'evt.preventDefault()'也不会帮助!?: -/ – Steve 2014-09-25 12:49:01

+0

不确定你的意思是没有帮助,但是在'if'' evt之前.preventDefault()'实际上可以防止任何链接像链接一样工作,即不会将您带到链接页面,如果您使用javascript处理该操作,则这就是您想要的。您链接到的答案实际上也很棒,它还检查链接是否是外部链接,并且只阻止链接加载内部链接。 – Yura 2014-09-25 14:12:56

+0

'evt.preventDefault()'的基础知识:http://jsfiddle.net/yuraji/mesdtnpq/ – Yura 2014-09-25 14:16:25