window 位置散列等于数据属性然后触发数据属性

window location hash equals data attribute then trigger the a data attribute

在获取等于数据属性的哈希值时遇到了一点困难。所以如果 url.com/#house-2 那么它将触发测试 2 的点击。你如何通过 jquery 获得它? http://jsfiddle.net/ar1bd4bj/7/

<ul class="list">
    <li> 
<a  data-loc="house" href="#">test</a>        
    </li>
<li>
<a  data-loc="house-2" href="#">test2</a>
</li>
    <li>
<a  data-loc="house-3" href="#">test3</a>
</li>
</ul>

<script>
$(window).load(function() {

if (window.location.hash === data('loc')) {         
      setTimeout(function() {
        $('this').trigger('click');
    },1);           

  } 
 });

</script>

您可以使用 attribute equals 到 select 您的目标 a 元素并像这样触发 .click()

$('.list a[data-loc="' + window.location.hash.replace('#', '') + '"]').trigger('click');

如果您的 HTML 包含那些 data-loc 属性,这将起作用。但如果数据是通过 jQuery .data() 函数添加的,它将不起作用。

您可以使用 filter() 通过 data-loc 属性查找所需的元素。试试这个:

var fragment = window.location.hash;
if (fragment) {
    fragment = fragment.substr(1);
    $('.list a').filter(function() {
        return $(this).data('loc') == fragment;
    }).click(); 
}