2009-07-30 7 views
2

相続人は私のjQueryJqueryの背景イメージが切り替わるのはなぜですか?

$(document).ready(function(){ 
$('a.toggle').css('background-image','url(http://blah/resources/img/close.gif)'); 

$(".sectiontitle").click(function(e){ 
    $(this).next('div').slideToggle("slow"); 

    el = $(this).find(".toggler > a.toggle"); 

    currBg = el.css('background-image'); 
    if (currBg=="url(http://blah/resources/img/close.gif)"){ 
    currBg="url(http://blah/resources/img/open.gif)"; 
    console.log('open gif'); 
    } 
    else{ 
    currBg="url(http://blah/resources/img/close.gif);" 
    console.log('close gif'); 
    } 
    console.log(currBg); 
    el.css('background-image',currBg); 

    return false; 
}); 

});

HERESに私のhtmlパネル(その多くがあります)

<div class="majorsection"> 

    <div class="sectiontitle"> 
     <h2>Restaurant Bookings</h2> 
     <div class="toggler"> 
      <a title="click to hide" class="toggle" href="http://blah/index.php/console/index"><span>-</span></a> 
     </div> 
     <div class="clear"></div> 
    </div> 
    <div class="msectioninner"> 
<div class="minorsection"> 
    <div class="sectionlist"> 
        <div class="section"></div> 
    </div> 
    <div class="sectionoptions"> 
     <div class="clear"></div> 
    </div> 
</div> 
    </div> 
</div> 

画像最初のクリックのスイッチとパネルはすべて、両方の方法を冷却スライドが、使用しないのはなぜ画像がバック

答えて

1

を変更doesntの代わりに2つのcssクラス。 これは、コードをはるかにきれいにし、保守しやすくします。

しようとする一つのことは、私はそこに問題はこれでだった(しかし、それは固定されていたと思った)覚え

.css('backgroundImage', currBg) 

.css('background-image', currBg) 

を変更することであることを失敗。これでうまくいかない場合は、問題を示すURLがありますか?

+0

すてきなアイデア、didntの仕事がありますが、それは私はまだクラスを行くだろう、バージョン1.3.2 – allen

+0

カント供給のURLを参照してくださいjqueryのの新しいバージョンを取得しようとしますルート。それらの醜い文字列チェックを打ち負かすと、あなたはhasClass( 'bla')を使うことができます。とても清潔です。 – allen

+0

セキュリティ上の理由で残念ながらthatsの場合は可能性 – redsquare

0

取り出した直後にconsole.log(currBg);を試しましたか? url()プロパティが書き換え/解決されている可能性があります。わかりませんが、画像の.attr( 'src')をテストしている場合にも同様の問題が発生します。これはもう設定していない可能性があります。

の提案は、しかし:ハード背景画像の値を符号化するのではなく、のような何かを考えてみます。

$(document).ready(function(){ 
    $('a.toggle').addClass('closed'); 
    $(".sectiontitle").click(function(e){ 
    $(this).next('div').slideToggle("slow"); 
    el = $(this).find(".toggler > a.toggle"); 
    // jQuery 1.3 has this: 
    // el.toggleClass('.closed'); 
    // otherwise - use this: 
    if (el.is('.closed')) 
    { 
     el.removeClass('closed'); 
    } else { 
     el.addClass('closed'); 
    } 
    return false; 
    }); 
}); 

は、その後、あなたのa.toggleが「オープン」との背景画像のプロパティをピックアップ

。 toggle.closedは、CSSファイル内の「閉じた」イメージを取得します。

関連する問題