2011-04-14 5 views
0

ユーザーがボタンをクリックしたときにスタイルシートを交換するためのシステム設定ができました。 Cookieが設定されています。ユーザーは、スタイルシート間の優先順位を設定していない場合DOM Readyの後にスタイル/呼び出し関数にCookieを設定する

jQuery(document).ready(function() {  

$(function() { 
      $("#designSwap li a").click(function() { 
       $("link").attr("href",$(this).attr('rel'));    
       $.cookie("cssSessionColor",$(this).attr('class'), {expires:null, path: '/'}); 
       $.cookie("css",$(this).attr('rel'), {expires: 365, path: '/'}); 
       updateColor($(this).attr('class')); 
       return false; 
      }); 
     }); 
}); 

そうでない場合は、ランダムに1つを選び、ちょうどセッションクッキーセット:それのすべてが正常に動作している

if($.cookie("css")) {  
    $("link").attr("href",$.cookie("css")); 

}else if($.cookie("cssSession")) { 
    $("link").attr("href",$.cookie("cssSession")); 

}else{ 

    var rand = Math.floor(Math.random()*2) 

    if (rand > 0) { 

     $("link").attr("href","/lib/css/common-dark.css"); 
     $.cookie("cssSessionColor","dark", {expires:null, path: '/'}); 
     $.cookie("cssSession","/lib/css/common-dark.css", {expires:null, path: '/'}); 


    }else{ 

     $("link").attr("href","/lib/css/common.css"); 
     $.cookie("cssSessionColor","light", {expires:null, path: '/'}); 
     $.cookie("cssSession","/lib/css/common.css", {expires:null, path: '/'}); 

    }; 
} 

。問題は、サイト上のFlashビデオプレーヤーの色を設定することにあります。 (updateColor関数)。ユーザーがリンクをクリックして色を選択しても、クッキーを読むだけでは機能していない場合に機能します。

私たちはDOMが準備が整う前に問題が発生していると思います。

私たちがやっていることは、レディファンクションがヒットしたら調整カラーを呼び出すことです。これはたぶん簡単なことですが、私たちはそれを見ていません。

+0

は、私が最初の実行を取得し、どのようなupdateColorが呼び出されたときに、あなたのクッキーが返送されているものを決定するために(アラートに入れたり)、お気に入りのデバッガを使用します。私はあなたの実行命令がオフであると思っていますが(確かにそれを判断するのに十分ではありませんが)、ページの読み込み時にあなたのクッキーがヌルになっています。この代わりに、 ' ' jQueryの(ドキュメント).ready(関数(){; $({ })}): '// jQueryの統括的準備の文 –

答えて

0

あなたは持っている:

$(function() { }); 

は、内部にネスト:

jQuery(document).ready(function() { }); 

これらは前者が後者の短手であることと同じことを意味します。私はdocument.readyのdocument.readyに匿名関数をバインドしているので、これがあなたの問題を引き起こしていると思います。このようにDocument.readyは既に発生しており、その関数を呼び出すことはありません。

編集:私はそれについてもっと考えました、そして、私は間違っているかもしれないようです....決してそれをしなかった(理由はない)が、これは実際に働くので、あなたの問題ではありません。私はあなたがそれを修正することができるようにしかし、ここに投稿を残します。 :)

http://jsfiddle.net/bcEQZ/

+0

は、だから私はこれを行うべきです jQueryの(ドキュメント).ready(関数(){ $(関数(){ }); });あなたが言ったように、 ' かかわらず、それは私を妨げているものではありません。 – Keefer

+0

いいえ '$({});'は無効です。そのビットを切るだけです。 '$(function(){//ここにあなたのもの});'。私はこれらを見ていないが、品質のように見える:http://blog.themeforest.net/screencasts/jquery-for-absolute-beginners-video-series/ –

関連する問題