0

私はスタックオーバーフローとjQueryを最初から使用することの両方に慣れていないので、誤ったフォーマット(またはコードを完全に省略)と明らかに粗雑なコーディングの練習を許してください。

私はここでポートフォリオを編集しています: Question answered, link removed

ナビゲーション内のリンクをクリックしようとすると、fadeOut>fadeIn効果が解決されます。ポータルとバージョン情報の間では、リンクは正常に機能しますが、[ジャーナル]、[リソース]、または[連絡先]をクリックすると、テキストが壊れて、それらから移動するときにフェードアウトできません。

単一のdivのinnerHTMLを置き換えることもできますが、コンテンツを交換するためにこのフォーマットを使用したいと思います。最初の2つのリンクで機能するのに、同じようにコーディングしたときに他の3つのリンクで機能しない理由を誰かに教えてもらえますか?

4

4 に答える 4

2

これで問題が解決するかどうかはわかりませんが、すべての条件付きチェックで、二重(またはさらに良いのはトリプル!)の等号ではなく、単一の等号が使用されていることに気付きました。

これからすべての条件を変更してみてください:

else if (about=true)

これに:

else if (about===true)

編集:JavaScriptをもう少し調べた後、不要な冗長コードがたくさんあることに気付きました。jsfiddleで小さなデモを作成しました。これは、コードを大幅に削減するのに役立つことを願っています。

http://jsfiddle.net/FdeM9/

$('a').on('click', function () {
    var clickedDiv = this;
    var visibleDiv = $('div:visible');
    var divToShow = $('div').eq(parseInt(clickedDiv.innerHTML)-1);

    if (visibleDiv[0] === divToShow[0]) {
        return;
    }

    visibleDiv.fadeOut(500, function () {
        divToShow.fadeIn(500);
    });
});​
于 2012-07-26T17:35:55.043 に答える
2

==ifステートメントの比較にはdouble-equalsを使用することになっています。

于 2012-07-26T17:36:09.603 に答える
1

代入演算子(=)と比較演算子(型付き比較の場合は==または===)を混同しています。

条件はブール変数から読み取っているので、次のようにすることができます。

if(条件){

}

また、スクリプトタグにタイプ属性がありません。

また、これらのイベントバインディング呼び出しを関数内に入れ、その関数をonReady(jQuery(document).ready)イベントにアタッチする必要があります。

また、グローバル変数には悪があります(または少なくとも避ける必要があります)。コードを見ると、これらのグローバルフラグを使用して、特定のメニュー項目を有効または無効にすることを計画しているようです。そもそも、グローバル変数を必要としないように、これらのメニュー項目のレンダリングを制御するだけではどうでしょうか。

于 2012-07-26T17:40:41.613 に答える
0

最も簡単でクリーンな方法は、すべてのメニュー項目に「メニュー」と言うクラスを与えることです。

次にこれを使用します

$(".menu").click(function () {
    $(".menu").fadeOut().delay(500);
    $(this).fadeIn();
}
于 2012-07-26T17:39:26.353 に答える