[英]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.