无论有没有jQuery,都不确定这是否可行。我有一个页面,其中有两个下拉菜单;一个显示今天的汽车销售,另一个显示昨天的汽车销售。今天的销售总是在页面加载时呈现;选中单选按钮后,将呈现比较销售,并在URL上添加额外路径。
我遇到的问题是,当用户被发送带有额外路径的URL时(即在发送链接之前选择了比较菜单),今天的销售下拉列表的文本等在打开时不会填充链接。
所以对于例如:
没有比较的网址: http://www.example.com/today/sales
打开比较下拉列表的网址: http://www.example.com/today/sales/compare/yesterday
我想创建一个if语句来说出类似
的内容if(link.pasted) {
//do this
}
再次不确定这是否可行。
答案 0 :(得分:1)
当用户做出选择时,您似乎已将整个页面重定向到不同的URL,而您应该考虑在URL的末尾使用散列来指示已进行“比较”。
所以你最终会得到两个网址,其中可以粘贴到浏览器中
http://www.example.com/today/sales
http://www.example.com/today/sales#compare-yesterday
将散列应用于javascript操作的第一个网址
是很容易的$('input:radio.compareYesterday').click(function(){
location.hash = "compare-yesterday";
});
你也可以观察哈希位置的变化,以便对视图进行一些更新 - 我建议你把它包装在一个函数中,因为你也会在onload上做它!。
function updateUI(){
if(location.hash == "#compare-yesterday"){
// do whatever happens when comparison is active
}
else{
// reset the UI to its default state
}
}
$(function(){
$(window).on('hashchange',updateUI);
// other onload stuff
updateUI();
});
This fiddle demonstrates 但是jsfiddle不允许我直接通过哈希的方式直接结果 - 所以尽管代码在那里我不能证明如果你直接去了它也会工作#compare-yesterday
路线。
这是单页应用程序如何处理路由的基础,以及如何根据用户操作调整视图(或者实际上,如果他们已经跟踪了SPA的链接)。如果您有兴趣了解更多信息,您可能希望了解一下Angular等框架。
答案 1 :(得分:0)
根据页面的整个架构,您可以在下拉列表选择中将js变量设置为某个值。然后,您可以检查是否设置了此变量以确定用户是否刚刚访问此页面。