2009-07-30 49 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文件中的“关闭”图像。