通过URL中的哈希标记对页面加载进行AJAX调用吗?

时间:2012-01-30 20:33:50

标签: javascript jquery jquery-isotope

我正在使用同位素,这里是jsfiddle:http://jsfiddle.net/desandro/DA3wF/

或者,我已经设置了一个演示:http://nerdi.net/isotope-test.html

有一个选项filter: selector

如何在页面加载时传递过滤器,例如index.html#green,过滤到.green类?这有可能吗?

2 个答案:

答案 0 :(得分:3)

filter: (window.location.hash != '') ? '.' + window.location.hash.replace('#', '') : 'default'

这是一个if/then语句,用于检查当前哈希值是否为空字符串。如果是,则filter将设置为default,否则将设置为window.location.hash值(减去#)。

这样的网址index.html会导致filter设置为default,而这样的网址index.html#my-selector会导致filter被设置为.my-selector

更新

您的代码无效的原因实际上与我的代码无关,但这是我在您的网站上测试的代码的更新版本:

$filterLinks.click(function(){
    var $this = $(this);

    // don't proceed if already selected
    if ( $this.hasClass('selected') ) {
        return;
    }

    $filterLinks.filter('.selected').removeClass('selected');
    $this.addClass('selected');

    // get selector from data-filter attribute
    var selector = $this.data('option-value');

    $container'.isotope({
        filter: selector
    });
});

答案 1 :(得分:1)

filter: window.location.hash.replace('#', '.')

location.hash将返回“#green”,我们只需用点替换它即可获得“.green”。

jsfiddle以及如何根据哈希值更改所选链接的示例。