超链接点击重定向到主页并滑动查找分区



要么是我遗漏了什么,要么是用错误的术语搜索,但我自己无法解决这个问题。正如标题中所描述的,点击navLink应该会回到主页,但也可以滑动切换幻灯片-2并使网站动画化。下面的代码会重新加载home,但回调要么被覆盖,要么只是在上下文中出错,因为切换和动画代码在其他上下文中工作。

将非常感谢您的帮助

function goHome(callback) { 
window.location = $("#navLink").find("a").attr("href");
callback() 
} 
function changeHome(){
$("#slide-2 h2").next(".portNav").slideToggle(800);
$("html, body").animate({scrollTop:$(this).offset().top}, 'medium');
}
$("#navLink").click(function(event){
event.preventDefault();
goHome(changeHome)
});

您正在更改文档位置,加载一个新页面,javascript将再次加载,并且您的回调将永远不会在离开页面时执行。

这里有两个选项,可以实现您需要的

1-QueryString

您可以使用querystring来确定这个负载是来自您的链接还是普通链接像这样的东西:

$(function(){
 $('#redirect').click(function(){
   window.location = 'YOUR_HOME_DOCUMENT?lnk=1';
 });
});

然后在homepage ready()函数中,检查是否存在该querystring(如果提供),然后根据需要设置动画。

示例:

1-首先,为了方便地读取Querystring变量,我总是使用以下jQuery插件。(我记不清我是从哪里得到这个代码的,但非常感谢最初的海报)。

$.extend({
    getUrlVars: function () {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for (var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    },
    getUrlVar: function (name) {
        if ($.getUrlVars()[name] == null) {
            return "";
        }
        else {
            return $.getUrlVars()[name];
        }
    }
});

然后,我可以做这样的事情:

$(function (){ // a short hand for $(document).ready(function)  ;)
var comingFromMyLink = $.getUrlVar('lnk');
if(comingFromMyLink)
{
     // do the required animation here
}
});

2-Cookie

我真的不建议在这种情况下使用此选项,但老实说,我想为您提供尽可能多的信息,您可以选择任何您认为合适的信息

你可以在cookie中保留一个标志或变量,并尝试将其放入你的主页

签出此示例:http://jquery-howto.blogspot.com/2010/09/jquery-cookies-getsetdelete-plugin.html

或此插件:http://archive.plugins.jquery.com/project/Cookie

就是这样,如果你还需要这种帮助,请告诉我,希望你能找到我的答案:)

相关内容

  • 没有找到相关文章

最新更新