2013-11-22 39 views
1

我有一個非常簡單的jQuery代碼(jQuery 1.7.1)。雖然下面的錯誤出現了,代碼沒有執行。jQuery錯誤.after()

Uncaught HierarchyRequestError: A Node was inserted somewhere it doesn't belong.

導致此錯誤的代碼如下:

counter = 0; 
jQuery('h3').each(function(){ 
    counter += 1; 
    div = '<div class="' + counter + '"></div>'; 
    jQuery(this).after(div); 
    jQuery(this).nextUntil('h3').appendTo('div.' + counter); 
}); 

出於某種原因,該jQuery(this).after(div);引起問題。它與我添加到div的類(特別是類,而不是我設置爲類的變量)有關。起初,我使用append而不是之後,但沒有達到預期的效果。但是,追加沒有給出錯誤。

任何人都可以澄清爲什麼我不允許在after函數中添加一個類,並且如果可能的話,給我一個很好的選擇來解決這個問題?

回答

3

您正嘗試將div插入自身。事實上,jQuery(this).after(div)結果:

<h3></h3> 
<div class="1"></div> 
<h3></h3> 

那麼,jQuery(this).nextUntil('h3')包括DIV本身。以下是如何避免這種情況:

jQuery(this).nextUntil('h3') 
    .not('div.' + counter) 
    .appendTo('div.' + counter); 

這無關你的問題,但我不知道是否有數字開頭的CSS類是否有效:https://stackoverflow.com/a/449000/1636522

+0

你是對的(在CSS類和div插入本身)。它給了我一個正確的方向。雖然你沒有給我一個可行的解決方案,但你確實幫我自己解決了這個問題。所以我會接受這個答案。 –

+0

它可以[只有HTML5中的數字類名]。 – MackieeE

+0

@SanderKoedood謝謝:)我已經添加了一個解決方案。 – leaf