jQuery如果是url hash,请单击event / activate javascript

时间:2012-08-10 04:54:42

标签: javascript jquery url

因此,从主页,我有一个链接到产品列表页面。 产品页面有扩展/折叠div。

我需要根据url#是什么来扩展相应的div。

所以主页上的链接是

<a href="/out-products.php#healthysnacks">healthy snacks</a>

当我点击上面的链接时,我试图在产品页面上激活它:

<a href="javascript:ReverseDisplay('products4')" id="healthysnacks"> Healthy Snacks</a>

我已经尝试了一些其他代码,我发现通过检查哈希标记触发点击并且它们都没有正常工作,我认为这是因为ReverseDisplay js。 请任何见解都有帮助。

感谢

3 个答案:

答案 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,则该错误代码最终会被执行。