2012-07-31 20 views
0
$(document).ready(function(){ 
    var unique_price = $(".price_value").get() 
    var number_price = unique_price.length; 
    if (number_price >=7){ 
     $(".price_list").each(function(index) { 
     $(".price_value_left").append($(".price_value:eq(0)"),$(".price_value:eq(1)"),$(".price_value:eq(2)"),$(".price_value:eq(3)"),$(".price_value:eq(4)")); 
     $(".price_value_right").append($(".price_value:eq(5)"),$(".price_value:eq(6)"),$(".price_value:eq(7)"),$(".price_value:eq(8)"),$(".price_value:eq(9)")); 
     });      
    } else if (number_price >9){ 
     $(".price_list").each(function(index) { 
     $(".price_value_left").append($(".price_value:eq(0)"),$(".price_value:eq(1)"),$(".price_value:eq(2)"),$(".price_value:eq(3)"),$(".price_value:eq(4)"),$(".price_value:eq(5)"),$(".price_value:eq(6)")); 
     $(".price_value_right").append($(".price_value:eq(7)"),$(".price_value:eq(8)"),$(".price_value:eq(9)"),$(".price_value:eq(10)"),$(".price_value:eq(11)"),$(".price_value:eq(12)")); 
     });  
    } 
    else { 

      $(".price_value_left").append($(".price_value:eq(0)"),$(".price_value:eq(1)"),$(".price_value:eq(2)"),$(".price_value:eq(3)"),$(".price_value:eq(4)"),$(".price_value:eq(5)"),$(".price_value:eq(6)")); 
    } 

});如果存在超过x个元素,则将其除以并附加超过另一个div的值

我有一些菜单里面有一些项目('li')。 我做了这段代码。如果div中有相同或多于7个元素,我会得到其他元素并放入另一个元素中。浮动与应扩大功能应解决,但我不能这样做,因为有垂直秩序,我需要维护。

我创造了'超过9个元素',所以他们保持更平衡 - 一种风格的事情。

但我认为这个代码非常丑陋,不能动态接受。

有没有更好的方法来解决这个问题并保持均衡设计?

回答

1
jQuery(function($){ 
    var unique_price = $('.price_value'); 
    if(unique_price.length > 6) { 
     var half = ceil(unique_price.length/2); // In case we have an odd number, we want more elements in the left "column", so we round to next higher number. 
     $('.price_list .price_value_left').append($('.price_value:lt(' + (half + 1) + ')'); 
     $('.price_list .price_value_right').append($('.price_value:gt(' + half + ')'); 
    } 
    else { 
     $('.price_list .price_value_left').append(unique_price); 
    } 
}); 

你基本上要什么比(:gt())和越大下(:lt())选择器。遗憾的是,没有:lte选择器,这就是为什么我把那个(half + 1)那里。我想没有必要解释他们做了什么。

+0

这是一个很好的答案,但不是用'ceil'与我合作,而是用'Math.ceil'代替。不知道这是我做的事情,还是不是!谢谢! – JGSilva 2012-08-01 11:47:00

+0

@JGSilva对不起,我其实没有测试过。你是对的,它应该是'Math.ceil'。 ;) – Kiruse 2012-08-02 16:09:07

1

我不知道的平衡,但你可以使用.slice()[docs]使用分割选择的元素:

$('#left').append($elements.slice(0,7)); 
$('#right').append($elements.slice(7)); 
+0

这很好,所以学习一些新的东西,但Derija93解决了德平衡!看一看!谢谢! – JGSilva 2012-08-01 11:48:33

+0

那么,你可以使用这两个答案中的最好的;)我真的不明白你的意思是什么“均衡设计”。 – 2012-08-01 12:01:58

相关问题