2012-08-03 33 views
1

我有一个动态填充的jquery按钮集。唯一的问题是,如果动态添加的按钮太多,它们会换行到下一行,而不会优雅地完成。以下是显示:
(element a|about|us|lorem|
|ipsum|and|done)
包装jQuery按钮集

与此主要问题是,在最右边的第一线,并在最左边的第二行的元素的元素没有圆角,他们有像所有其他不在按钮集的第一个或最后一个位置的按钮元素一样的方角。有没有办法像这样得到一个显示?
(element a|about|us|lorem)
(ipsum|and|done)

谢谢!

+0

这是用于移动解决方案吗?如果是这样的话,可以考虑使用其他设计方法,例如使按钮的宽度达到100%,并使用display:block来堆叠它们。我可以建议的另一件事是通过一些数学计算深入研究jQuery,以强有力的手臂按钮来做你想做的事情。 – Lowkase 2012-08-03 17:53:54

+0

不,不是一个移动解决方案,一个桌面解决方案。如果没有简单的方法去做,我可能会看到jquery如何调整按钮的大小,将按钮的容器设置为固定宽度,并为每一行按钮创建一个新的按钮集。 – Vap0r 2012-08-03 18:00:48

回答

2

使用offset()正如Peter所说的绝对是正确的方向。找到正确的元素后,您需要添加.ui-corner-right.ui-corner-left类。

$("#box label").each(function(){ //loop through all the labels for the buttons 
    var self = $(this); 
    if(self.offset().top > self.height()){ //find the first element on the second line 
     self.addClass("ui-corner-left") 
     .prev().prev().addClass("ui-corner-right") // move to the previous label on the above line 
     return false; // break out of the .each 
    } 
}); 

http://jsfiddle.net/KEfau/当然,这仅适用于事情是两线和conidition的。每个里面()可能会因您的布局有所不同。对于多行按钮,我会有一个变量,它存储当前行的顶部偏移量,然后当元素不匹配时,执行类增加。

+0

太棒了,这正是我一直在寻找的。我没有抵消经验,但在此之后,我肯定会考虑在将来使用它。谢谢! – Vap0r 2012-08-27 20:28:03

0

你可以尝试检测与jQuery断行偏移()和突破去年同一类,你之前设置的项目,然后突破到同一类作为你的第一个之后的项目。我不确定这是否可行,取决于元素如何得到圆角,我不是很熟悉jQuery -ii