2014-09-25 36 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