簡體   English   中英

jQuery animate()定位問題

[英]jQuery animate() to position issue

我只是在我的個人網站上工作,對此做了一些修改。

我實現了一種“手風琴”菜單功能,如果單擊了菜單按鈕,“未單擊”按鈕就會消失,然后將被單擊的按鈕移到列表的頂部,然后面板會向下移動我將在其中放置文本內容。

在Firefox中,此功能可以完美運行,但是在IE和Chrome中,按鈕跳轉到頁面頂部,然后進行動畫定位,而不是從其起始位置進行動畫處理。

任何人有任何想法如何解決此問題?

違規代碼:

function Accordion(e)
 {
  var o =
  {
   init: function()
   {
    o.button = e;
    o.addClickHandler();
   },

   addClickHandler: function()
   {
    o.button.click(function(){
     o.button.removeClass('unselected');
     o.button.addClass('selected');
     o.fader();
    });
   },

   fader: function()
   {
    $j('.unselected').animate({opacity:0}, 1000);

    var wait = setInterval(function() {
     if(!$j('.unselected').is(":animated") ) {
      clearInterval(wait);
      o.shifter();
     }
    }, 100);
   },

   shifter: function()
   {
    o.button.css({'position':'absolute'});
    o.button.animate({top:91}, 500, o.createInfoBox);
   },

   createInfoBox: function()
   {
    var buttonParent = o.button.parent();
    buttonParent.append("<div class='infoBox'></div>");
    $j('.infoBox').animate({height:390});
   }
  }

  o.init();
  return o;
 }
}

問題出在shifter函數之內,在這里我將位置設置為絕對,然后進行動畫處理,從而可以實現所需的效果。 我知道為什么要這樣做(假設它只是將自身重置為top:0,然后動畫為top:91),但是有人能快速解決嗎? 已經很晚了,我正在努力。

非常感激,

戴夫

當您將元素切換為絕對值時是否嘗試使用元素的當前位置...例如:

function() { 
  var currentp = $(this).offset();
  o.button.css({'position':'absolute', top: currentp.top}); 
  o.button.animate({top:91}, 500, o.createInfoBox); 
}

請注意,有兩種不同的偏移量函數,我不確定在這里要使用哪一種偏移量函數,因此您可能需要查看該文檔。

另外,您總是可以重新設置jQuery-ui手風琴主題,從而省去麻煩;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM