2016-05-16 34 views
1

我有以下代碼:如何在jQuery中包裝兩個元素的組?

<span>Hello</span> 
<span>Hello</span> 
<span>Hello</span> 
<span>Hello</span> 
<span>Hello</span> 
<span>Hello</span> 

我想把它變成這樣:

<div> 
    <span>Hello</span> 
    <span>Hello</span> 
</div> 
<div> 
    <span>Hello</span> 
    <span>Hello</span> 
</div> 
<div> 
    <span>Hello</span> 
    <span>Hello</span> 
</div> 

我怎樣才能做到這一點?

+1

爲什麼downvotes?當然這是一個有效的問題? – think123

+0

您沒有顯示或顯示任何您已經嘗試完成此操作的內容。 – jwatts1980

+0

@ jwatts1980我通常會這樣做 - 除了我發現這個問題非常極端 - 要麼是整個事情,要麼我根本不知道如何做到這一點。 – think123

回答

1

更新

使用此代碼,而不是 - 它更靈活,因爲它不依賴於子元素的父內的定位:

var odds = $("span:odd"); 
var evens = $("span:even"); 
var i = 0; 
odds.each(function() { 
    $(this).add(evens[i]).wrapAll('<div></div>'); 
    i++; 
}); 

想通了與在網上搜索一下:

$("span:nth-child(odd)").each(function() { 
    $(this).add($(this).next()).wrapAll('<div></div>'); 
}); 

span:nth-child(odd)表示每秒選中<span>$(this).add($(this).next())選擇當前<span>和下一個,然後.wrapAll將它們集體包裝在<div>標籤中。

希望它有幫助!

+0

@Pang我的錯誤 - 我不能計算:) – think123

+0

這個答案似乎並沒有工作,當我嘗試它。應該使用'(odd)'和'prev()',或者'(even)'和'next()'。你可以仔細檢查? – Pang

+0

它工作 - [這是一個小提琴](https://jsfiddle.net/tohs1crb/)+1認爲 – gibberish

0

你可以用.slice()做到這一點,就像這樣:

var divs = $("div>div"); 
for(var i = 0; i < divs.length; i+=2) { 
    divs.slice(i, i+2).wrapAll("<div class='new'></div>"); 
} 
相關問題