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 回答
0
function HideShowItem(item){  
  var liID = item.getAttribute("id");   
  // First change the url of image     
  var imageUrl = ($('#' + liID).css('display') == "none" ? "url('images/minus.png')" : "url('images/plus.png')");    
  $('#' + liID).css("src", imageUrl);   
  //then use slidetoggle jquery function    
  $("#" + liID).find("ul").slideToggle("slow");    
}
于 2013-11-22T13:09:19.380 回答