Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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 使用JQuery preventDefault(),但仍将路径添加到URL_Javascript_Jquery_Preventdefault - Fatal编程技术网

Javascript 使用JQuery preventDefault(),但仍将路径添加到URL

Javascript 使用JQuery preventDefault(),但仍将路径添加到URL,javascript,jquery,preventdefault,Javascript,Jquery,Preventdefault,我在一个网站上工作,点击某个链接会滑下一个登录面板。我正在使用event.preventDefault()停止站点重定向,并使用动画事件将面板向下滑动。单击链接时,面板向下滑动,url保持不变 单击链接时,我希望面板像正常情况一样设置动画,但链接的href属性将显示在url中。在这种情况下,应该是这样的:http://domain_name/#login 下面是我现在的代码: $("#login_link").click(function (e) { e.preventDefault()

我在一个网站上工作,点击某个链接会滑下一个登录面板。我正在使用
event.preventDefault()
停止站点重定向,并使用动画事件将面板向下滑动。单击链接时,面板向下滑动,url保持不变

单击链接时,我希望面板像正常情况一样设置动画,但链接的href属性将显示在url中。在这种情况下,应该是这样的:
http://domain_name/#login

下面是我现在的代码:

$("#login_link").click(function (e) {
    e.preventDefault();
    $("#login").animate({ 'margin-top': 0 }, 600, 'linear');

    window.location.hash = $(this).attr('href');
});

这段代码根据需要成功地将“#login”添加到url,但它跳过了登录面板的动画。单击链接时,面板会立即出现。我想保留动画和更新的url行为。这可能吗?

使用下面的代码。只需在动画完成事件中调用哈希

$("#login_link").click(function (e) {
    e.preventDefault();
    $("#login").animate({ 'margin-top': 0 }, 600, 'linear', function(){  window.location.hash = $(this).attr('href'); });

});

我不确定,但您可能正在寻找此功能

1> 当有人点击登录时,url变为abc.com/#login,登录面板动画出现

2>当某些主体只是在url中键入abc.com/#login时,您会期望相同的行为(登录面板的动画)

您当前所做的仅适用于案例1,不适用于案例2。如果您希望动画(或任何东西)在单击或仅键入url时同时工作。您需要一些机制来检测哈希更改

有一个著名的插件


去看看这个插件,看看事情是如何完成的。如果你发现任何难以理解的事情,我们就在这里

这可能是一个愚蠢的问题,但是当window.location.hash代码行被注释掉时,您确定jquery动画正在工作吗?您能接受您所问问题的答案吗?我相信至少有一些人有不错的答案。。。人们通常喜欢认可他们的工作。当你省略
e.preventDefault()
行时会发生什么?我删除了我的,所以只有在我发布了:)