jquery重新排列页面元素

时间:2012-11-20 00:42:40

标签: javascript jquery jquery-selectors coffeescript

我有一个大约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>

1 个答案:

答案 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可能更简单,除非您想在另一个标记内添加新引号。