0

のCSSで画像を変更しようとしてい.slidingDivます。これは私がこれまでに持っているコードです:

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

2 に答える 2

4

初め

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

これらの 2 つの行は同じ要素を対象としているため、2 番目の行は最初の行をオーバーライドしています。


次に、比較して(a > b)います。これから何を期待しますか?あなたは2つのjqueryオブジェクトを比較しています(現時点では同じ内容です)


elseあなたがすることで

('.imgchange img').

あなたは最初に欠けているよう$です..

于 2012-12-20T21:26:30.030 に答える
2

の可視性をテストするだけ.slidingDivです。

あなたのコードでab、数値ではなくjQuery自体を返しています。 2 つの引数またはオブジェクトを最初の引数として渡されたjQuery.fn.cssは、CSS を 2 番目の引数の文字列値またはオブジェクトの値に設定します。要素を非表示slidingDivにし、再び表示するのが非常に高速であるため、おそらく目には気付かないでしょう。jQuery が返されているため、メソッドを連鎖させることができます。

何をしたいかは、いつそれをしたいかによって異なります。

の後に画像を変更する場合は、コード内で、 slideToggleの 2 番目の引数としてコールバック関数を指定します。.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');
    }
}

の前に画像を変更したい場合は、呼び出しを呼び出しの前置きます。別の日にコールバック関数を保存できます。ただし、hideはコールバック関数をパラメーターとして受け入れることに注意してください。changeImageslideToggle

于 2012-12-20T21:25:36.317 に答える