6

所以从主页,我有一个链接到产品列表页面。产品页面有展开/折叠 div。

我需要适当的 div 来扩展,具体取决于 url# 是什么。

所以主页上的链接是

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

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

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

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

谢谢

4

3 回答 3

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>
于 2012-08-10T05:00:47.027 回答
3

The answers suggested here are valid, but...

Be extremely careful when using the window.location.hash as it is in a jQuery selector because this could lead to a XSS vulnerability. $() can also create an HTML element and with a carefully constructed hash value, someone could execute arbitrary JavaScript code.

For example

http://my-website.com/about#'><img src=x onerror=alert(/XSSed/)>

If my-websites.com/about page uses the window.location.hash inside a jQuery selector, that onerror code would end up getting executed.

于 2012-10-18T22:01:40.303 回答
3

您可以使用对象的hash属性Location,尝试以下操作:

$(document).ready(function(){
   var id = window.location.hash;
   $(id).trigger('click')
})

当您使用 jQuery 而不是使用javascript:协议时,您可以使用 jQueryclick方法:

$('#healthysnacks').click(function() {
   // do something here
})
于 2012-08-10T04:59:40.177 回答