この図のように、li 要素を列として動的に追加する必要があります
私には1つのli要素があり、この写真のようにli要素を追加したいのですが、要素が5の場合、1つの列には4つのliが必要です。別の行に追加する必要がありますか?
CSS 列を使用できます。それはまさにあなたが探しているもののようです: http://jsfiddle.net/ewsMh/。
ul {
-webkit-columns: 2;
-moz-columns: 2;
columns: 2;
}
サポートされていないブラウザ用のポリフィルがあると思います。
ここにあなたのDOMがあります:
<ul id="left"></ul>
<ul id="right"></ul>
li を追加する関数 (jquery を使用):
var addLi = function($li) {
var $uls = $('ul');
$.each($uls, function(index, ul) {
// If this ul has less than 5 li's
// then add the li here
if ($(this).find('li').length < 5) {
$(this).append($li);
// exit the for loop since we have placed this li
return;
}
}
};
addLi('<li>Test</li>');
要素の半分とそれに応じて左右の要素をターゲットにするためul
にnth-child(odd)
、セレクターを使用できるセレクターは1つだけです。nth-child(even)
float
このデモを見てください:http://jsfiddle.net/x9kxd/
もちろん、<li>
要素の順序を見逃しますが、少なくとも2列のコンテナーの優れた単純なソリューションが得られます。
- -編集 - -
<li>
要素が4項目後に列を変更する必要がある場合は、セレクターを使用する必要がありますnth-child(-n+4)
。このようにして、必要に応じて順序を維持します。
デモは次のとおりです:http://jsfiddle.net/QqudC/1/
セレクターは、:nth-child()
IE8以前を除くすべての主要なブラウザーでサポートされています。
私の意見では、ul
クラス名が同じで、が異なる2つを取り上げID's
ます。それらを互いに隣接して配置します。動的に追加するときli
に、変数を使用して追加をカウントしcounter
ます。追加が4を超える場合は、別のul
タグに追加するだけです(機能しているIDを変更します)。
あなたはこのようにすることができます。
var liLength;
$("#btnAddLi").click(function() {
liLength=$('#yourLastUl li').length;
if(liLength>4)
$("#CreateOneMoreUL").append("<li>Content</li>");
else
$("#yourLastUL").append("<li>Content</li>");
});