如何包装兄弟元素?

时间:2009-10-12 18:25:17

标签: javascript jquery button

以下标记会注入一些额外的元素(例如:包含一些闪存的div)。

如何在一个p中动态包装所有div标记,并在其上方添加一个按钮以切换新创建的div

<div class="post">
  <p>blquehrgéoqihrteoijth</p>
</div>

<div class="post">
  <p>blquehrgéoqihrteoijth</p>
  <p>blquehrgéoqihrteoijth</p>
  <p>blquehrgéoqihrteoijth</p>
  <p>blquehrgéoqihrteoijth</p>
</div>

3 个答案:

答案 0 :(得分:2)

为简单起见,我会做以下事情:

$('.post').prepend("<h3 class='showText'>biography</h3>\n<div class='toggle'>");
$('.post').append("</div>");

应该做你需要的。

编辑1:此处添加了cballou的评论代码,以便于阅读:

$j('h3').live('click', function() {
  $j(this).toggleClass('hideText').slideToggle(300);
});

答案 1 :(得分:1)

我只是提取现有的HTML并将其包装(作为文本),然后重新插入。

$('.post').each( function() {
    $(this).html('<h3 class="showText">biogrpahy</h3><div class="toggle">'
                  + $(this).html()
                  + '</div>');
});

答案 2 :(得分:0)

$j('.post').wrapAll("<div class='toggle'></div>");
$j('.toggle').before('<h3 class="showText">bibliography</h3>');
$j('h3').live('click',function(){
    $j(this).toggleClass('hideText');
    $j('.toggle').slideToggle(300);
});