うわーそれは混乱して、 それはあなたの状況を複雑以上のように思えます。 ページ固有のCSSなどは必要ありません。別の時刻に.currentクラスを設定するだけで済みます。
基本的に、ページが読み込まれると、そこにハッシュタグがあるかどうか、そしてそれが正しいかどうか(実際のページをあなたが占めているかどうか)、ハッシュタグを参照する必要があります瞬間だけでなく、葉を強調表示します。
をあなたの全体のことを簡素化することができます。したがって、$ wrapperの中に情報がロードされて配置されると、フェードインしてアニメーション化されます。 .currentを次に置いてください。
http://www.mediafire.com/?51vajskfeu923
私はチャックできなかったので、いくつかのファイルがあります。それはJSfiddleで
右そう、私は共同フェードメニュー全体が機能するようにはしませんが、通常のホバーのように表示/非表示にしています。私は後でそれを見ることができますが、あなたがそれを行う方法を知っているので、私はあなたがそれを理解できると仮定しています。ただ、JavaScriptのファイルに移動し、これを探して:
$this = $(this);
var currentHash = window.location.hash;
console.log('specialMenu this.each(this) = '+$this.attr('href'));
//append all images
$this.append('<img class="defaultImage" src="'+settings.defaultImage+'"/>')
.append('<img class="hoverImage" src="'+settings.hoverImage+'"/>')
.append('<img class="activeImage" src="'+settings.activeImage+'"/>');
//prepare positioning
$('.defaultImage').css({
'z-index':'1'
});
$('.activeImage').css({
'z-index':'2'
});
$('.hoverImage').css({
'z-index':'3'
});
//Make parent correct height
$this.height($this.find('img').height());
//check what hash value is loaded
if(currentHash == $this.attr('href')){
$this.find('img:not(.activeImage)').hide();
$this.find('img.activeImage').show();
}else{
$this.find('img:not(.defaultImage)').hide();
$this.find('img.defaultImage').show();
}
$(this).hover(function(){
currentHash = window.location.hash;
$(this).find('img:not(.hoverImage)').hide();
$(this).find('img.hoverImage').show();
},function(){
currentHash = window.location.hash;
if(currentHash == $(this).attr('href')){
$(this).find('img:not(.activeImage)').hide();
$(this).find('img.activeImage').show();
}else{
$(this).find('img:not(.defaultImage)').hide();
$(this).find('img.defaultImage').show();
}
});
});
},
今のメインページにそれを設定するために、このコードを見て:
$('#contentContainer').jdAjaxContent({
'defaultPage': 'home',
'pathToLoadGif' : 'ajaxloading.gif'
});
$("#destroy").click(function(){
console.log('destroy.click');
$(this).jdAjaxContent('destroy');
});
//had to put this in its own window load, not sure why; weird bug
$(window).load(function(){
console.log('specialMenu.click');
$('a[href^=#]').jdAjaxContent('specialMenu',
{
'defaultImage': 'MenuIcons-01.png',
'hoverImage' : 'MenuIcons-02.png',
'activeImage' : 'MenuIcons-03.png'
});
});
だけを取り除くことを、破壊するビットを無視プラグイン。それを取り出す。
$('#contentContainer').jdAjaxContent({
'defaultPage': 'home',
'pathToLoadGif' : 'ajaxloading.gif'
});
$(「#のcontentContainer」)でのあなたの興味は、デフォルトのページヘクタール
pageToLoadGifは通常、ほとんどのローディングGIFへのパスです
デフォルトのページにあなたのAjaxの負荷コンテナです表示されます。
今、あなたはまた、これはあなたの小さなメニューのことを行うビットである
$('a[href^=#]').jdAjaxContent('specialMenu',
{
'defaultImage': 'MenuIcons-01.png',
'hoverImage' : 'MenuIcons-02.png',
'activeImage' : 'MenuIcons-03.png'
});
を見てする必要があります。 あなたはそれぞれを個別に行う必要があります異なるイメージを持っているので、このような何か:
$('a[href^=#]').each(function(){
$(this).jdAjaxContent('specialMenu',
{
'defaultImage': $(this).attr('defaultImage'),
'hoverImage' : '$(this).attr('hoverImage'),
'activeImage' : $(this).attr('activeImage')
});
});
は、その後、あなたに=「何とか」defaultImageを置くので、それは何
ALSO
のようになります。すべての 'console.log'を '//console.log'に置き換えて、実際のWebサイトにすべてのコンソール項目が表示されないようにします。 私は、自分のAjaxエンジンを書くのがとても面白いと思っています。バグが見つかったり、[email protected]でコメントやメールを送ったりする必要がある場合は、comの
感謝を
をラップすべきだと思うが、私は問題が複雑になり過ぎた感を持っていました!私のjQueryのスキルは限られているので、実際の例/いくつかの説明は素晴らしいでしょう。 – Nick
私はもう少し効率的になるように書き直すことができましたが、メルボルンカップの日と私は今朝仕事をしていますので少し難しいです。私は質問をすぐに更新して、今はうまくいくものを用意します。私はすぐに仕事のためにこのようなことをする必要があります、私はあなたが盗作することができる私の書き換えられたコードで再び私の質問を更新、この週末来ることができます:) – MrJD
ありがとう。私はあなたの現在のコードを試して、いくつかの奇妙なことを経験しています。サイトはホームページではなく、約ページで開き、連絡先フォームが開いたときに現在のページの葉が緑色のままになります(前に退色しました。これは私が探している動作です)。しかし、大きなラッシュはありません。今週末に新しいコードを投稿できるのであれば、それは素晴らしいでしょう。常に盗難に喜ぶ! – Nick