由于某些原因,此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.
...
}
答案 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;
}
代码在浏览器的历史记录中添加了一个新条目。
答案 2 :(得分:0)
删除防止默认功能:
e.preventDefault();