이것은 실제로 잘 작동하지만 li
이 4n + 4 자식 인 경우에만 after()
이 실행됩니다. 즉, 처음부터 오른쪽에 3 또는을 클릭하면 제대로 작동합니다. 3을 클릭하면 7 번째가 작동을 멈추고 7 번째가 이제는 8 번째 요소가되기 때문에 6 번째 대신 작동합니다.
약간 서투른 갱신 : 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>');
});
아하이오! 물론 모든 요소에 대해 작업 할 수 있지만 "last-of-line = nth (4n + 4)"뒤에 새 요소를 삽입하고 싶습니다. 어떤 팁? Google 이미지와 같이 약간의 작업을해야합니다. 이미지를 클릭하면 해당 이미지 라인 아래의 상자에서 열립니다. – Emin
좋은 반응이지만, 이것은 대답이 아니라 문제에 대한 교육 된 설명입니다. –
@LeeTaylor, 방금 작업 예제 추가 : – mishik