1

我有一段大约 12 段长的文本......在文本里面有几个块引用,我想在整个文档中自动突出显示和重新排列(每 3 段),然后删除块引用以便文本出现两次。一次作为自动排序位置的突出显示片段,第二次在没有块的原始位置...

它有点工作,但我觉得我错过了一些东西,因为它不遵循顺序。我认为它会是(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>

4

1 回答 1

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>')

制作数组是测试间距的一种简单方法,除非您需要无限长度,否则可以工作。删除 unwrap 和 use replacewith,这对您来说可能更简单,而after不是prepend除非您希望在另一个标签中使用新引号。

于 2012-11-20T15:25:31.377 回答