Javascript 编译多个hash.location
您是否有任何建议,可以在短脚本中编译多个Javascript 编译多个hash.location,javascript,jquery,Javascript,Jquery,您是否有任何建议,可以在短脚本中编译多个窗口.location.hash?我这样问是因为我现在好像在重复杂凑 这是我的密码: $(window).on('hashchange load',function() { if(window.location.hash && window.location.hash == '#home') { console.log('home load'); } else if(window.location.hash
窗口.location.hash
?我这样问是因为我现在好像在重复杂凑
这是我的密码:
$(window).on('hashchange load',function()
{
if(window.location.hash && window.location.hash == '#home') {
console.log('home load');
} else if(window.location.hash && window.location.hash == '#about') {
console.log('about load');
} else if(window.location.hash && window.location.hash == '#contact') {
console.log('contact load');
}
});
要缩短代码,我们没有多少办法。为了让它更好地运行,有一些调整。首先,您可以将
window.location.hash
值检查移动到其自身的条件以保存它。然后可以检查每个值:
$(window).on('hashchange load', function() {
if (!window.location.hash)
return;
if (window.location.hash == '#home') {
console.log('home load');
} else if (window.location.hash == '#about') {
console.log('about load');
} else if (window.location.hash == '#contact') {
console.log('contact load');
}
});
要进一步扩展此功能以使逻辑更具可扩展性,您可以将要在对象中的这些哈希更改下执行的函数存储在对象中,由哈希值本身设置关键字,如下所示:
$(window).on('hashchange load', function() {
var hash = window.location.hash;
if (hash && functions.hasOwnProperty(hash))
functions[hash]();
});
var functions = {
'#home': function() {
console.log('home load');
},
'#about': function() {
console.log('about load');
},
'#contact': function() {
console.log('contact load');
}
}
虽然这种方法在技术上并不“更短”,但它的可扩展性要高得多。请注意,无需每次都验证哈希值 在性能方面,最好保存一个新的哈希引用,如
let hash = this.location.hash;
和每次访问哈希相比,location.hash更便宜
$(window).on('hashchange load',function() {
// this validation for existence of hash can be done only once
let hash = this.location.hash;
if(!hash) {
return;
}
if(hash == '#home') {
console.log('home load');
} else if(hash == '#about') {
console.log('about load');
}
});
您的描述非常模糊,但考虑到当前代码,可以通过获取
window.location.hash
的值、删除hashtag(即#
)并将加载
附加到该字符串来缩短描述
请参见下面的演示
$(窗口).on('hashchange-load',function()){
if(window.location.hash){
var hashValue=window.location.hash.replace('#','');
log(hashValue+load');
}
});代码>
这与这里的主题无关,更适合代码工作。不过,我的建议是,它们都会检查window.location.hash
-为什么不为其设置一个if语句,然后为值设置一个开关(例如if(window.location.hash){//switch statement here}
)我喜欢函数方面的东西——使用.substr来获取
之后的所有内容会更好吗?只是为了更好的阅读目的……当然是可能的,尽管这是一个更具风格的选择。