8

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

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

有 3 个 Youtube 播放器,可以将它们弹出到可拖动的 DIV 中,也可以将它们最小化到右侧。

我不能只用语言来解释我的问题,你必须看到它才能更好地理解。

首先,弹出所有 3 名玩家,然后最小化他们,他们会在右边,每个人都在前一个之下。

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

我知道现在正在这样做,因为我在函数MaximizePlayer( )popinPlayer()中使用

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});
    });
}

我不想要那个。我希望第一个必须始终位于距顶部 50px 的位置,而另一个则位于下方。所以如果我关闭中间的,第一个将保持原位,最后一个会上升,如果我关闭最后一个,什么都不会发生。

但我真的不知道我怎么能做我想做的事,所以我在这里寻求提示/解决方案。

4

2 回答 2

3

我把它改成了这个http://jsfiddle.net/Klors/GuumY/11/似乎有效?

你有一条线function popinPlayer(elem) {将csstop减少30,但不首先检查它是否为0(或低于删除的句柄)。

所以我在你重置之前top = top-30;更改top = top > thisTop ? top-30: top;并添加了,这似乎有效。var thisTop = parseInt($uVH.css("top"), 10);top$uVH

于 2013-05-17T17:56:20.513 回答
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

于 2013-05-17T18:33:07.897 回答