這實際上工作正常,但after()
只會執行,當下一個li
是4n + 4孩子。 也就是說從一開始,它會正常工作,如果你在3 或點擊7.右鍵點擊你在3之後,第7人會停止工作,6日一會的工夫,而不是,因爲7現已成爲第八元素。
有點笨拙更新:http://jsfiddle.net/hYE7e/3/
$("ul li:nth-child(4n)").addClass("last-in-line");
$("li").click(function() {
$(this).nextAll("li.last-in-line").andSelf(".last-in-line").filter(":first").after('<li class="full">new full width item</li>');
});
andSelf(".last-in-line").filter(":first")
確保4日,8日,等:點擊元素將工作。
更新:
在評論中討論後,我覺得我有:http://jsfiddle.net/hYE7e/7/
通過自定義過濾器:
$("li").click(function() {
var myIndex = $("li:not(.full)").index($(this)); // Save our position in a row
$(this)
.nextAll("li:not(.full)")
.andSelf()
.filter(function(index){ // Get 4n'th lis from 'not(.full)' set
return (index + myIndex + 1) % 4 == 0;
})
.add("li:last") // Make sure last rows will work
.first() // Only add 'li' after first matching element
.after('<li class="full">new full width item</li>');
});
哦,我明白了!我希望它能夠處理所有元素,但是在「最後一行=第n(4n + 4)」之後插入新元素。有小費嗎?它應該像谷歌圖片一樣工作,當你點擊一個圖像打開在「圖像行」下方的框中。 – Emin
雖然回覆良好,但這不是一個答案,而是一個受過良好教育的問題解釋。 –
@LeeTaylor,剛剛添加的工作示例:) – mishik