2016-03-23 4 views
0

あるときに、ここに私のコードは^機能doesntの仕事私のコードは次のようになると変数は、私は奇妙な問題になった最初の

$(document).ready(function(){ 
    $(".switch-content div:first-child").fadeIn(); 
    $(".switch-content div:first-child").toggleClass("switch-active"); 
    $(".switch-menu ul li").click(function(){ 
     var clicked = $(this).index()+1; 
     $(this).parent().find("li.switch-active").toggleClass("switch-active"); 
     $(this).toggleClass("switch-active"); 
     $(this).parent().parent().parent().find(".switch-content div.switch-active").fadeOut(); 
     $(this).parent().parent().parent().find(".switch-content div.switch-active").toggleClass("switch-active"); 
     $(this).parent().parent().parent().find(".switch-content div:nth-child("+clicked+")").delay(200).toggleClass("switch-active"); 
     $(this).parent().parent().parent().find(".switch-content div:nth-child("+clicked+")").delay(200).fadeIn(); 
    }); 

}) 
var anchor = window.location.hash.substring(1); 
var linked = $("#"+anchor).index()+1; 

で、これは

の作品、すべてが正常に動作しますが、私最初の場所で変数を移動すると、私のjavascriptは動作を停止します。

var anchor = window.location.hash.substring(1); 
var linked = $("#"+anchor).index()+1; 
$(document).ready(function(){ 
    $(".switch-content div:first-child").fadeIn(); 
    $(".switch-content div:first-child").toggleClass("switch-active"); 
    $(".switch-menu ul li").click(function(){ 
     var clicked = $(this).index()+1; 
     $(this).parent().find("li.switch-active").toggleClass("switch-active"); 
     $(this).toggleClass("switch-active"); 
     $(this).parent().parent().parent().find(".switch-content div.switch-active").fadeOut(); 
     $(this).parent().parent().parent().find(".switch-content div.switch-active").toggleClass("switch-active"); 
     $(this).parent().parent().parent().find(".switch-content div:nth-child("+clicked+")").delay(200).toggleClass("switch-active"); 
     $(this).parent().parent().parent().find(".switch-content div:nth-child("+clicked+")").delay(200).fadeIn(); 
    }); 

^このdoesntの仕事

誰もがなぜ知っていますか?それは私には意味がありません。そして私のコードはもっとシンプルにできることを知っています。私はそれに取り組んでいます。

はありがとうと素敵な一日

+0

コンソールのエラーを確認しましたか? – Rajesh

+0

私はコンソールをチェックしていて、珍しいことはありませんでした。また、あなたが最も近いことを意味しています、ありがとう。 ) – Kyrbi

+0

()。parent()。parent()。parent()はclosest()を使用し、リンク変数はページが完全にロードされていない場合はNULLになる可能性があります。 – madalinivascu

答えて

0

私はそれはブラウザがページのロードが外の変数を残して最初にその関数をロードします

$(ドキュメント).ready()の外だからだと思いますその値を意味する関数はnullになります。グローバルそうであるようにそれを得るために

var Foo = {}; 

$(document.ready(function() { 
    Foo.anchor = window.location.hash.substring(1); 
    Foo.linked = $("#"+anchor).index()+1; 
    // rest of code 
}); 
+0

のコメントがありました。いずれの方法でも、これらの変数はグローバル変数になり、document.readyより前に呼び出されます。 1つがうまくいけば、他もうまくいくはずです – Rajesh

+0

私はグローバル変数としてこれら2つを持つ必要があります。 – Kyrbi

+0

ok lemme私の答えを更新してください:) – TT120

0

を持っている:)私は、コードの以下の部分は

var anchor = window.location.hash.substring(1); 
var linked = $("#"+anchor).index()+1; 

を壊していると思うのコンソールを確認してください。部分文字列がある値を返し、jqueryがDOM要素を見つけることができませんでした。 javascriptエラーが発生すると、コードの残りの部分は実行されません。 コンソールのエラーは、あなたが根本的な原因を知るのに役立ちます

+0

これはコメントです。また、OPはすでにコンソールにエラーがないことを確認しています。 – Rajesh

+0

私は答えを入力し始めたので、私はRajeshに同意します。私が提出した時点では、 – user2846413

0

私は私の問題への解決策を見つけました。私はドキュメントがロードされる前に何かを探していました。だから私はそれを固定した方法です。

var anchor = window.location.hash.substring(1); 
var linked = ""; 
$(document).ready(function(){ 
    linked = $("#"+anchor).index()+1; 
    $(".switch-content div:first-child").fadeIn(); 
    $(".switch-content div:first-child").toggleClass("switch-active"); 
    $(".switch-menu ul li").click(function(){ 
     var clicked = $(this).index()+1; 
     $(this).parent().find("li.switch-active").toggleClass("switch-active"); 
     $(this).toggleClass("switch-active"); 
     $(this).parent().parent().parent().find(".switch-content div.switch-active").fadeOut(); 
     $(this).parent().parent().parent().find(".switch-content div.switch-active").toggleClass("switch-active"); 
     $(this).parent().parent().parent().find(".switch-content div:nth-child("+clicked+")").delay(200).toggleClass("switch-active"); 
     $(this).parent().parent().parent().find(".switch-content div:nth-child("+clicked+")").delay(200).fadeIn(); 
    }); 
}) 

私の間違いを認識してくれてありがとうございました。 :)

関連する問題