1

何かが足りないか、間違った用語で検索していますが、この問題を自分で解決することはできません。見出しで説明されているように、navLink をクリックするとホームに戻るだけでなく、スライド トグル スライド 2 と Web サイトのアニメーション化も想定されています。次のコードはホームをリロードしますが、このコンテキストではコールバックが上書きされるか、単純に間違っています。これは、トグル コードとアニメーション コードが他のコンテキストで機能するためです。

助けていただければ幸いです

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)
});
4

2 に答える 2

4

ドキュメントの場所を変更し、新しいページをロードすると、javacript が再度ロードされ、ページを離れたときにコールバックが実行されることはありません。

于 2012-08-21T21:26:46.113 に答える
1

必要なものを達成するためにここにある2つのオプション

1-クエリ文字列

クエリ文字列を使用して、この負荷がリンクからのものか、次のような通常のものかを判断できます。

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

次に、ホームページの ready() 関数内で、このクエリ文字列が存在するかどうかを確認し、提供されている場合は、必要なものをアニメーション化します。

例:

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 に保存して、ホームページ内で取得しようとすることができます

このサンプルをチェックしてください: http://jquery-howto.blogspot.com/2010/09/jquery-cookies-getsetdelete-plugin.html

またはこのプラグイン: http://archive.plugins.jquery.com/project/Cookie

それだけです。この方法でまだサポートが必要な場合はお知らせください。私の答えがお役に立てば幸いです:)

于 2012-08-21T21:34:27.320 に答える