2013-05-17 12 views
8

这不是一个真正的jQuery插件,但对于我的问题,我不知道什么标题是合适的。Javascript/jQuery插件

这是“插件” - >http://jsfiddle.net/djrikyx/GuumY/9/

有3 YouTube播放器,与流行的可能性,从他们进可拖动的DIV,并尽量减少他们的权利。

我无法用单词解释我的问题,你必须看到它才能更好地理解。首先,弹出所有3名玩家,然后将他们最小化,他们会在右边,每一个在前面。

然后,如果您尝试关闭或最大化中间或最后一个,您会看到所有内容都会上升30px。

我知道现在正在使用

var countMP = $('.uiVideoHandleMin').length; 
uVC.removeClass('uiVideoContainerMin'); 
if(countMP > 0){ 
    $('.uiVideoHandleMin').each(function(){ 
     var top = parseInt($(this).css('top'), 10); 
     top = top-30; 
     $(this).css({top:top}); 
    }); 
} 

)这样做,因为我写的去做,在功能maximizePlayer(popinPlayer()我不希望出现这种情况。我希望第一个必须始终位于顶部50px处,而另一个位于下方。所以如果我关闭中间的一个,第一个会保持原位,最后一个会上升,如果我关闭了最后一个,没有任何事情发生。

但我真的不知道我怎么能做到我想要的,所以我在这里要求提供一个提示/解决方案。

回答

3

我把它改成这个http://jsfiddle.net/Klors/GuumY/11/这似乎工作?

您的function popinPlayer(elem) {中有一行会将css top减少30,但不检查是否为0(或低于删除的句柄)。

因此,我改变top = top-30;top = top > thisTop ? top-30: top;var thisTop = parseInt($uVH.css("top"), 10);上添加了你$uVH重置top之前,这似乎工作。

+0

似乎工作!我会调整它为maximizePlayer()也。并测试一下。谢谢! – Fr0z3n

+0

你想用'maximizePlayer()'展示什么不同的行为? – Klors

+0

这是一样的,我说适应,但不适应,我的不好,只是实施你的修改。我已经做到了,它非常完美!非常感谢你! – Fr0z3n

0

你可以这样做:

function SortByTop(a, b){ 
     var aTop = parseInt($(a).css('top'), 10); 
     var bTop = parseInt($(b).css('top'), 10); 
     return ((aTop < bTop) ? -1 : ((aTop > bTop) ? 1 : 0)); 
}  

上maximizePlayer()来排序的所有$(”。uiVideoHandleMin'),然后就去做:

$.each(minarray,function(i,n){ 
     $(this).css({top:(i*30)}); 
});  

jsfiddle