1

この関数は、上/下矢印をクリックして非表示の div をスライドすると呼び出されます。div が非表示の場合、矢印は下を指し、div が表示されると上に変わります。div が表示されている場合、矢印は上向きで div を非表示にし、div を閉じると下向きに変わります。これを行うためのより効率的な方法があるかどうか、またはこれが正しい方法であるかどうかを知りたかっただけです。ありがとう。

  function showInfo(info_id) {
    var img_id = '#arrow_'+info_id;
    var div = '#info_'+appointment_id;
    $(div).slideToggle('normal',function() {
        if ($(this).is(':visible')) {
            $(img_id).attr('src',$(img_id).attr('src').replace('_down','_up'));
        }
        else {
            $(img_id).attr('src',$(img_id).attr('src').replace('_up','_down'));
        }
    });}
4

3 に答える 3

5

まず、あなたが持っているものは完全に正しいです。ただし、少し短くしたい場合(質問からのようです)、jQuery 1.4+を使用している場合は.attr()、次のように に関数を渡すことができます:

function showInfo(info_id) {
  $('#info_'+appointment_id).slideToggle('normal',function() {
    $('#arrow_'+info_id).attr('src', function(i, src) {
      return $(this).is(':visible') ? src.replace('_down','_up')
                                    : src.replace('_up','_down');
    });
  });
}

形式は.attr('attributeToChange, function(index, currentVal) {})であるため、関数で現在の値を非常にきれいな方法で使用できます。

于 2010-05-27T23:36:40.243 に答える
1

ちょっと違うバージョン。

$('.accHead').click(function() {
        var $title = this;
        var $toggle =  $(this).next();
        $(this).next().slideToggle('slow',function() {
            if ($('img',$title).length > 0){
                $('img',$title).attr('src', function(i, src) {
                   return  $toggle.is(':visible') ? src.replace('_down','_up')   : src.replace('_up','_down');
                });
            }
});
于 2011-05-06T13:10:46.190 に答える