2012-11-20 5 views
1

나는 약 12 ​​단락 길이의 텍스트 본문을 가지고 있습니다 ... 텍스트 내에서 자동으로 강조하고 문서 (3 번째 단락마다) 전체를 재정렬하고 이후에 제거하려는 몇 개의 blockquotes입니다 텍스트가 두 번 나타나도록 blockquote. 한 번 강조 표시된 스 니펫으로 자동 정렬 된 위치에 있고 블록이없는 원래 위치에서 두 번째로 표시됩니다.jquery 페이지 요소를 다시 배열

일종의 작동하지만 순서를 따르지 않으므로 놓친 것 같습니다. 나는 그것이 (3, 6, 9 등) 될 것이라고 생각하지만, 그것은 무언가에 의해 버려진 것 같다?

jQuery -> 
    content = $('article.city-review div') 
    content.find('blockquote').each (index) -> 
     line_space = (index+1)*3 
     quote_tag = '<span class=\"quote_left\">'+$(this).text()+'</span>' 
     content.find('p:nth-child('+line_space+')').prepend(quote_tag) 
     $(this).contents().unwrap().wrap('<p></p>') 

UPDATE :

<p>Text</p> 
<p>More Text</p> 
<p>Text</p> 
<p>More Text</p> 
<blockquote>Text</blockquote> 
<p>Text</p> 
<p>More Text</p> 
<blockquote><p>Sometimes these appear</p></blockquote> 

출력은 나에게 배열이 쉽게 만들기 빈 페이지 태그 <p></p> 및 중첩 P 태그 <p><p>Something</p></p>

+0

당신은 무엇을 버리는 지에 대해 더 구체적으로 설명 할 수 있습니까? 현재 인용구는 어디에 있습니까? 2,5,8 이후 또는 전혀 안되니? – teddybeard

+0

빈 p 태그 위로 놓은 다음 p 태그를 중첩했기 때문에 다른 태그 바로 뒤에서 삽입합니다. – ere

답변

2
jQuery -> 
    content = $('article.city-review div') 
    content.find('blockquote').each (index) -> 
     position = [2,6,10] 
     line_space = position[index] 
     text = $(this).text() 
     quote_tag = '<span class=\"quote_left\">'+text+'</span>' 
     content.find('p:nth-child('+line_space+')').after(quote_tag) 
     $(this).replaceWith('<p>'+text+'</p>') 

을 제공합니다

입력과 같은 방법을 사용하여 간격을 테스트하고 무제한 길이가 필요하지 않으면 작동 할 수 있습니다. 새로운 태그를 다른 태그 안에 넣지 않으려면 replacewith (어쩌면 더 간단 할 수도 있음)과 prepend 대신 after을 사용하십시오.

관련 문제