使用url hash执行click事件

时间:2017-03-01 11:50:23

标签: javascript jquery

所以我有一个页面,有3个按钮来过滤页面上的内容。

<section class="solution-filter">
    <div class="wrapper">
        <button class="fact-sheet" data-target_category="fact-sheet" disabled="">Fact sheet</button>
        <button class="demo" data-target_category="demo">Demo</button>
        <button class="apps" data-target_category="apps">Apps and connectors</button>
    </div><!-- /.wrapper -->
</section>

我希望能够根据网址哈希点击按钮。

例如http://example.com/#demo 会点击<button class="demo" data-target_category="demo">Demo</button>

if ( window.location.hash ) {
    $(document).click($('<button>').data('target_category', (window.location.hash));
}

2 个答案:

答案 0 :(得分:1)

您已经有了正确的想法,尽管您用于提升点击事件的语法并不完全正确。您需要先使用hash值来选择元素,然后在其上调用click()trigger('click')

if (window.location.hash) {
  $('.' + window.location.hash.substr(1)).click();
}

请注意,substr()调用用于从字符串的开头删除#

上面的代码在页面加载时适用。如果您还想知道页面加载后哈希值何时发生更改,您可以使用hashchange的{​​{1}}事件:

window

答案 1 :(得分:1)

您需要获取button然后触发click()$('<button>')将创建一个jQuery对象,而不是定位所需的元素。

if (window.location.hash)
    $('button[data-target_category="'+window.location.hash.substr(1)+'"]').click();