jQuery replaceWith()每个元素都带有第一个

时间:2012-09-11 03:06:09

标签: jquery replace element each nav

尝试复制页面上的第一个.postNav并用它替换所有后续导航。我已经简化了,逻辑似乎正确,但该函数仅在我传递字符串时才有效,而不是元素。

JS小提琴! http://jsfiddle.net/cwMhh/1/

HTML:

<nav class="postNav">
    <ul>
        <li><a href="#pageHeader">link to header</a></li>
        <li><a href="#one">link to other posts</a></li>
        <li><a href="#two">link to other posts</a></li>
        <li><a href="#three">link to other posts</a></li>
        <li><a href="#four">link to other posts</a></li>
        <li><a href="#five">link to other posts</a></li>
    </ul>
</nav>

JavaScript的:

$('.postNav:gt(0)').each(function(){
    $(this).replaceWith($('.postNav:eq(0)'));
});

2 个答案:

答案 0 :(得分:1)

您必须.clone()元素:

$('.postNav:gt(0)').replaceWith(function () {
    return $('.postNav:first').clone();
});

为了获得更好的性能,请缓存选择器:

var $navs = $('.postNav'),
    $replaceWith = $navs.first();

$navs.not( $replaceWith ).replaceWith(function () {
    return $replaceWith.clone();
});

答案 1 :(得分:0)

var replaceHTML = $('.postNav:first').html();
$('.postNav:gt(0)').each(function(){
    $(this).replaceWith(replaceHTML);
});