2009-07-30 51 views
2

繼承人我的Jquery爲什麼不是我的jquery背景圖像切換?

$(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; 
}); 

});

我的繼承人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

爲什麼不使用兩個CSS類代替。它會使代碼更清潔和可維護。

做不到這一點,試圖爲改變

.css('background-image', currBg) 

.css('backgroundImage', currBg) 

我記得有一個問題,這個(但認爲它已經被固定)。如果這不起作用,你有網址顯示的問題?

+0

不錯的主意,沒有工作,但會盡量讓jQuery的新版本,看看如果多數民衆贊成的可能性 – allen 2009-07-30 16:54:20

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文件中的「關閉」圖像。