$("document").ready(function() { // まず隠す if (!$("#move").is(":hidden")) { $("#move").animate({ height: "toggle", opacity: "toggle" }); } var prevIndex = 0; // クリックイベントにハンドラをバインド $("ul li").click(function() { // クリックされた行の末尾の要素を算出する var index = $("ul li").index(this); index += (5 - index % 5); index -= 1; // デバッグ用 $("#debug1").text(index); $("#debug2").text(prevIndex); // #move をトグル var move = function() { $("ul li").eq(index).after($("#move")); $("#move").animate({ height: "toggle", opacity: "toggle" }); prevIndex = index; }; // 表示されているときは隠す if (!$("#move").is(":hidden")) { $("#move").animate({ height: "toggle", opacity: "toggle" }, 500, function() { // 表示されていた行以外がクリックされた場合 if (index != prevIndex) { // クリックされた行に表示 move(); } }); } // 表示されていない場合 else { // クリックされた行に表示 move(); } }); });
<ul class="target"> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> <li>aaa</li> </ul> <div id="move">#move</div> <div style="clear:both;padding-top:20px;"> <p>index:<span id="debug1">id:debug1</span></p> <p>prevIndex:<span id="debug2">id:debug2</span></p> </div>
ul li { float:left; margin-left: auto; margin-right: auto; padding: 10px 20px; text-align: center; display: block; } ul.target li:nth-of-type(5n+1) { clear: both; } ul.target li:nth-of-type(2n+2) { background: lightgrey; } #move { clear:both; height: 100px; width: 300px; background: #678; }