我有一个大约12段长的文本正文...文本中有几个块引用,我想在整个文档中自动突出显示并重新排列(每第3段),然后删除blockquote以便文本出现两次。一次作为自动排序位置的突出显示片段,第二次位于原始位置,没有块...
它有点奏效,但我觉得我错过了一些东西,因为它不遵循命令。我认为它会(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>')
更新:
输入看起来像:
<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><p>Something</p></p>
答案 0 :(得分: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
,对您和after
而不是prepend
可能更简单,除非您想在另一个标记内添加新引号。