2012-12-20 15 views
0

我想改變圖像上的事實的.slidingDiv的CSS。 這是我到目前爲止的代碼:更改圖像由於CSS的顯示jQuery

$(document).ready(function(){ 
    var a = $('.slidingDiv').css({'display':'none'}); 
    var b = $('.slidingDiv').css({'display' : 'table-row'}); 

    if (a > b) { 
     a.find('.imgchange img').attr('src','http://illiweb.com/fa/m/tabs_less1.gif'); 
    } else if (a<b){ 
     $('.imgchange img').attr('src','http://illiweb.com/fa/m/tabs_more1.gif'); 
    } 
});​ 

誰能解釋什麼,我做錯了什麼?

編輯:我試圖使tabs_more1.gif出現,如果DIV被關閉(display:none;)和tabs_less1.gif出現,如果他們被打開(display:table-row;

代碼打開和關閉的div:

$(document).ready(function() { 
    $(".slidingDiv").hide(); 
$('.secondarytitle').click(function() { 
    $(this).closest('tr').siblings('.slidingDiv').slideToggle(); 
}); 
    }); 
+6

你爲什麼要比較'a'和'b'?他們不是數字。 – JJJ

+0

這段代碼不起作用有很多原因。你能解釋一下你想要完成什麼嗎? –

+1

是的,我不確定這是否正在做你所需要的。根據圖像名稱,如果div可見或不可見,您想要換出更少或更多圖像 - 是否正確?如果是這樣,你應該檢查:可見 – Syon

回答

2

只需測試.slidingDiv的知名度

在您的代碼中,ab正在返回jQuery它的精靈,而不是數字。 jQuery.fn.css傳遞兩個參數或作爲其第一個參數的對象將CSS設置爲您的第二個參數的字符串值或對象的值。你隱藏了你的元素,然後再次顯示它,眼睛可能不會注意到它。 jQuery正在返回,所以你可以把chain methods放在一起。

你想要做什麼取決於當你想要做

如果要在之後更改圖像,請在代碼中提供一個回調函數作爲slideToggle的第二個參數。這是.slidingDiv停止滑動/動畫時執行的功能。在該功能中,您可以在此之後檢查任何你想要的東西;保證你的div將被完全顯示或完全隱藏,並且jQuery將正確評估當前應用的CSS樣式爲.slidingDiv

$(document).ready(function() { 
    $(".slidingDiv").hide(); 
    $('.secondarytitle').click(function() { 
     $(this).closest('tr').siblings('.slidingDiv').slideToggle(undefined, changeImage); 
    }); 
}); 

function changeImage() { 
    var slidingEl = $('.slidingDiv'), 
     isVisibleBool = slidingEl.is(':visible'), 
     imgToChangeEl = $('.imgchange img'); 

    if (true === isVisibleBool) { 
     imgToChangeEl.attr('src','http://illiweb.com/fa/m/tabs_less1.gif'); 
    } else { 
     imgToChangeEl.attr('src','http://illiweb.com/fa/m/tabs_more1.gif'); 
    } 
} 

如果你想前更改圖像,把changeImage呼叫slideToggle調用之前。您可以將回調函數保存另一天。但是,請注意hide確實接受回調函數作爲參數。

+0

此代碼將它們更改爲tabs_more1,但打開時它不會將em更改爲less1.gif? – EasyBB

+0

你將不得不添加一個事件處理程序來打開它。或者將代碼包裝在setInterval/setTimeout中。 – danronmoon

+0

@danronmoon,你有打開/關閉div的代碼嗎?如果是的話編輯你的問題,並添加該代碼以及 –

4

首先

var a = $('.slidingDiv').css({'display':'none'}); 
var b = $('.slidingDiv').css({'display' : 'table-row'}); 

這兩個線定位的相同的元件,因此第二被重寫的第一個做什麼。


然後你比較(a > b)。你對此有什麼期望?你(在這一刻內容相同)


比較兩個jQuery的對象在else你做

('.imgchange img'). 

你似乎缺少$在開始..

+0

oops關於$,但我認爲它們是不同的變量,因爲我將顯示從none更改爲table-row – EasyBB