有没有办法改进以下代码?我怀疑它可以在不必使用.each()
的情况下完成,但我不确定如何实现这一点。
JS:
$('dt.something').each(function () {
$(this).nextUntil('dt.something')
.last()
.after($('<dd>new one</dd>'))
});
上面的代码作用于下面的示例,在指定的元素之后添加新的<dd>
。基本上每<dd>
后<dd>s
的每个“集合”末尾都有一个新的<dt class="something">
:
<dl>
<dt class="something">term 1</dt>
<dd>definition 1-a</dd>
<dd>definition 1-b</dd>
<dd>definition 1-c</dd>
<dd>definition 1-d</dd> <<-----here
<dt class="something">term 2</dt>
<dd>definition 2-a</dd>
<dd>definition 2-b</dd>
<dd>definition 2-c</dd> <<-----here
<dt class="something">term 3</dt>
<dd>definition 3-a</dd>
<dd>definition 3-b</dd> <<-----here
</dl>
答案 0 :(得分:0)
沿着这些方向可能有些东西
/* Select all dt.something elements inside dl that are immedialy after dd and add new element before it. */
$('dl dd + dt.something').before('<dd>new one</dd>');
/* Select last dd inside dl and add new elem after that */
$('dl dd:last').after('<dd>new one</dd>');