Javascript没有在地址栏中添加id

时间:2015-07-08 20:13:58

标签: javascript jquery

由于某些原因,此javascript不会将点击的元素的ID添加到地址栏中。它会正确地完成所有其他事情。

这里是jsfiddle: here

所以,例如,如果我点击class Account { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime DateOfBirth { get; set; } public string PhoneNumber { get; set; } public double Balance { get; set; } // More properties here ... } ,我希望它将ID放在地址栏中,如下所示:class Atm { public List<Account> Accounts { get; set; } public Atm() { Accounts = new List<Account>(); } public void CreateAccount() { var account = new Account(); // Get details from user here: ... account.Balance = 0.0; account.Id = Accounts.Count + 1; Accounts.Add(account); } public void Deposit() { int accountId; // Get input from the user here: // -------------------------------- // 1. Check that the account exists // 2. Deposit into the account. ... }

3 个答案:

答案 0 :(得分:0)

根据您的代码,完成后:

e.preventDefault();

您可以执行以下操作:

var hash = jQuery(this).attr("href"); //Your clicked link
if (window.history && window.history.pushState) {
  history.pushState(null, null, 'hash'); // This won't make the page jump to the id
} else {
  location.hash = hash; //This will be the fallback for old browsers and this will make the page jump to that id
}

答案 1 :(得分:0)

preventDefault,顾名思义,可以防止发生默认操作;在锚点的情况下,导航到新的URL。

技术定义可以在Mozilla的开发者网络(https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault)上找到:

  

如果事件可以取消,则取消该事件,而不停止进一步传播事件。

由于您要取消该事件,浏览器不会执行任何操作(例如滚动到该元素)。

您可以在不更改任何其他内容的情况下添加此代码:

var hash = this.hash;

if ('history' in window && history.pushState) {
    // Add a new state in the browser's history. Does not scroll to the element
    // See https://developer.mozilla.org/en-US/docs/Web/API/History/pushState
    history.pushState('', '', hash);
} else {
    // Fallback for old browsers (mainly IE<9). Scrolls to the element
    location.hash = hash;
}

代码在浏览器的历史记录中添加了一个新条目。

请查看https://jsfiddle.net/toothbrush7777777/108d4356/示例。

答案 2 :(得分:0)

删除防止默认功能:

e.preventDefault();