Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 标记上的HTML pushstate要更改参数,请加载两次_Javascript_Html - Fatal编程技术网

Javascript 标记上的HTML pushstate要更改参数,请加载两次

Javascript 标记上的HTML pushstate要更改参数,请加载两次,javascript,html,Javascript,Html,我想在不刷新的情况下更改参数。所以,我现在使用的是pushstate。像这样, HTML <a class="filter" data-value="recent" href="#">Recent</a> <a class="filter" data-value="popular" href="#">Popular</a> 它的工作很好,但它加载页面2次。所以,我得到了重复的调用javascript。而且,这让我的网站很糟糕 我的逻辑中的错误点是

我想在不刷新的情况下更改参数。所以,我现在使用的是pushstate。像这样,

HTML

<a class="filter" data-value="recent" href="#">Recent</a>
<a class="filter" data-value="popular" href="#">Popular</a>
它的工作很好,但它加载页面2次。所以,我得到了重复的调用javascript。而且,这让我的网站很糟糕


我的逻辑中的错误点是什么?

您是否尝试过
event.preventDefault()
?@Lee我在单击listener时添加了e.preventDefault()。它会更改参数,但不调用javascript。我想在更改参数后调用javascript一次。您还缺少一个
从您的点击处理程序的末尾。它对我有效,可能是相关代码中的错误@李,这是我的错误,重新编写代码到这里。我编辑那个。
$('.filter').click(function(){
    var data = $(this).data('value');

    if ( data == 'recent' ) {
        // make new_params_string here
        history.pushState({}, "", window.location.pathname + '?' + new_params_string);
    } else if ( data == 'popular' ) {
        // make new_params_string here
        history.pushState({}, "", window.location.pathname + '?' + new_params_string);
    }
});