因此,从主页,我有一个链接到产品列表页面。 产品页面有扩展/折叠div。
我需要根据url#是什么来扩展相应的div。
所以主页上的链接是
<a href="/out-products.php#healthysnacks">healthy snacks</a>
当我点击上面的链接时,我试图在产品页面上激活它:
<a href="javascript:ReverseDisplay('products4')" id="healthysnacks"> Healthy Snacks</a>
我已经尝试了一些其他代码,我发现通过检查哈希标记触发点击并且它们都没有正常工作,我认为这是因为ReverseDisplay js。 请任何见解都有帮助。
感谢
答案 0 :(得分:6)
您可以在产品页面的文档就绪功能中进行以下更改:
简单修复:由于jQuery id-selector是#elementId
,您只需使用window.location.hash
值作为您的ID选择器,并使用它来定位所需的元素
if ( window.location.hash ) {
$(window.location.hash).click(); //clicks on element specified by hash
}
更好:除上述内容外,请从您的标记中取出js。
$('#healthysnacks').click(function(e) {
e.preventDefault();
ReverseDisplay('products4');
});
然后,执行此操作后,使用上面的$(window.location.hash).click()
代码。
另外,将您的链接更改为:
<a href="#" id="healthysnacks"> Healthy Snacks</a>
答案 1 :(得分:3)
您可以使用hash
对象的Location
属性,请尝试以下操作:
$(document).ready(function(){
var id = window.location.hash;
$(id).trigger('click')
})
当您使用jQuery而不是使用javascript:
协议时,您可以使用jQuery click
方法:
$('#healthysnacks').click(function() {
// do something here
})
答案 2 :(得分:3)
这里建议的答案是有效的,但是......
在jQuery选择器中使用window.location.hash时要特别小心,因为这可能会导致XSS漏洞。 $()也可以创建一个HTML元素,并且使用精心构造的哈希值,有人可以执行任意JavaScript代码。
例如
http://my-website.com/about#'><img src=x onerror=alert(/XSSed/)>
如果my-websites.com/about页面在jQuery选择器中使用window.location.hash,则该错误代码最终会被执行。