如何用jQuery做到这一点?

时间:2010-06-24 07:41:43

标签: jquery

<strong>title</strong>

<cite>...</cite>
<cite>...</cite>
...
<a>ank</a>

如果没有$el,我想在<cite>后面的<strong>后面追加一个新元素<cite>,然后在$el之后追加<strong> {{1}}

3 个答案:

答案 0 :(得分:0)

var cites = $('strong').nextAll('cite');
/*Incorrect
if (cites.length==0) $('strong').append($el);
else cites.filter(':last').append($el);
*/

记事本代码。对不起,我犯了一个错误。

修改 if-else可以更改为:

$el.insertAfter(cites.length==0?$('strong'):cites.filter(':last'));

答案 1 :(得分:0)

试试这个:

$last_cite = $("strong ~ cite:last");

if ($last_cite.length > 0) {
  $last_cite.after($el);
} else {
  $("strong").after($el);
}

[编辑]

  

〜选择所有兄弟元素   遵循“prev”元素,有   同一个父母,并匹配   过滤“兄弟姐妹”选择器。   source

[/编辑]

或者在一行中,但不是更短,更不可读:

$el.insertAfter($last_cite.length > 0 ? $last_cite : $("strong"));

<强>更新

更短的方法:

$el.insertAfter($("strong, strong ~ cite:last").eq(-1))

答案 2 :(得分:0)

var anchor = $('strong');
while (anchor.next('cite').length) {
  anchor = anchor.next();
}
anchor.after($el);