你可以使用.wrapInner()
/.unwrap()
方法:
Updated Example
$('.product-detail-dl').wrapInner('<ul></ul>')
.find('ul').unwrap()
.find('dt, dd').wrapInner('<li></li>')
.find('li').unwrap();
輸入:
<dl class="product-detail-dl">
<dt class="float-left"> Composition</dt>
<dd>Suede 100%</dd>
<dt class="float-left">Lining Composition</dt>
<dd>Suede 100%</dd>
</dl>
輸出:
<ul>
<li>Composition</li>
<li>Suede 100%</li>
<li>Lining Composition</li>
<li>Suede 100%</li>
</ul>
爲了將dt
/dd
元素結合起來,你可以使用下面的包裝前/ upwrapping元素:
Updated Example
$('.product-detail-dl dd').each(function() {
$(this).prev().append(': ' + this.innerText);
}).remove();
輸入:
<dl class="product-detail-dl">
<dt class="float-left"> Composition</dt>
<dd>Suede 100%</dd>
<dt class="float-left">Lining Composition</dt>
<dd>Suede 100%</dd>
<dt class="float-left">Sole Composition</dt>
<dd>Rubber 100%</dd>
<dt class="float-left">Brand Style ID</dt>
<dd>333824045</dd>
</dl>
輸出:
<ul>
<li>Composition: Suede 100%</li>
<li>Lining Composition: Suede 100%</li>
<li>Sole Composition: Rubber 100%</li>
<li>Brand Style ID: 333824045</li>
</ul>
作爲一個側面說明,你也可以使用.replaceWith()
method了相同的結果:
$('.product-detail-dl dd').each(function() {
$(this).prev().append(': ' + this.innerText);
}).remove();
$('.product-detail-dl').find('dt, dd').replaceWith(function() {
return $('<li>' + this.innerHTML + '</li>');
});
$('.product-detail-dl').replaceWith(function() {
return $('<ul>' + this.innerHTML + '</ul>');
});
什麼是你的方法這麼遠? – divy3993
這種修改可以通過簡單地重寫源HTML來更好地實現。假設這是不可能的,選擇每個'dt'元素,將它與'next'('dd')'一起抓取並附加一個新的'li'元素。 –