jQuery if url hash, click event/activate javascript

前端 未结 3 1473
悲哀的现实
悲哀的现实 2021-01-01 01:11

So from the home page, i have a link that goes to a products listing page. The product page has expand/collapse divs.

I need the appropriate div to expand depending

相关标签:
3条回答
  • 2021-01-01 01:32

    You can make the following changes in the document ready function of your product page:

    Simple fix: Since the jQuery id-selector is #elementId, you can simply use the window.location.hash value as your id selector, and use it to target the desired element.

    if ( window.location.hash ) {
        $(window.location.hash).click(); //clicks on element specified by hash
    }
    

    Better: In addition to the above, take the js out of your markup.

    $('#healthysnacks').click(function(e) {
        e.preventDefault();
        ReverseDisplay('products4');
    });
    

    Then, after doing this, use the $(window.location.hash).click() code from above. Also, change your link to:

    <a href="#" id="healthysnacks"> Healthy Snacks</a>
    
    0 讨论(0)
  • 2021-01-01 01:41

    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.

    0 讨论(0)
  • 2021-01-01 01:49

    You can use the hash property of the Location object, try the following:

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

    As you are using jQuery instead of using javascript: protocol, you can use the jQuery click method:

    $('#healthysnacks').click(function() {
       // do something here
    })
    
    0 讨论(0)
提交回复
热议问题