【问题标题】:How to wrap some items with jQuery?如何用 jQuery 包装一些项目?
【发布时间】:2011-11-19 09:07:24
【问题描述】:

我有无法直接修改的代码:

<div id="registerMessage"> 
   <div class="pageTitle" style="padding:0px 0px 5px 0px;">
      Register 
   </div> 
   Some bla bla bla
</div>

<input type="hidden" name="ardir" value="" /> 
<input name="action" type="hidden" value="insert" /> 
<label>Email </label>
<div>
   <input  name="user[email]" id="user[email]" type="text" value=""  size="35" class="inputReg" />
</div>

<label>Password (5 chars)</label>
<div>
   <input name="user[passwd]" type="password" value=""  size="35" class="inputReg" />
</div>

<label>Password (confirm)</label>
<div>
   <input name="user[password_confirm]" type="password" value=""  size="35" class="inputReg" />
</div>

<div id="memomessage">
    (Other bla bla bal)
</div>            

我需要从第一个标签到最后一个div(不包括 memomessage)包装成一个新的div

<div id="registerBox"> the code of before </div>

【问题讨论】:

  • 所有这些元素的第一个父元素是什么?是否有包含所有这些的 DIV?
  • 是的.. 抱歉,我发布的代码包含在一个名为
    的 div 中
  • @Felix Kling 我是 jquery 的真正初学者我正在读一本书来学习它...我尝试使用 insertAdd 和 insertBefore 函数,但据我了解我不能用它们来包装东西,对吗?

标签: javascript jquery wrapall


【解决方案1】:
$('label:first').nextAll().andSelf().not('#memomessage').wrapAll('<div id="registerBox">') 

这是fiddle

【讨论】:

    【解决方案2】:

    使用关注

    $('label:first').prev().nextUntil('#memomessage').wrapAll('<div id="registerBox"></div>');
    

    http://jsfiddle.net/eeusN/1/

    【讨论】:

      【解决方案3】:

      假设您不特别关心 #memomessage 并且想要获取标签和 div 对,您可以使用 next-adjacent 选择器:

      var newDiv = $('<div />', {id:'registerBox'});
      $('label + div').prev().andSelf().wrapAll(newDiv);
      

      工作示例:http://jsfiddle.net/x6pSZ/

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签