jQuery – Verwenden Sie wrap (), um mehrere Elemente zu umbrechen?

Wie würde ich wrap() , um mehrere Elemente (mit verschiedenen classn) innerhalb eines

?

Auf dem Formular, an dem ich gerade arbeite, gibt es eine große Liste von Checkbox-Eingaben und Labels in Form von:

   

etc

Ich möchte ein

um die Eingabe und die Beschriftung wickeln, so dass das Ergebnis wäre:

 

Vielen Dank!

Sie können die .wrapAll() -Methode verwenden.

 $('form > input').each(function(){ $(this).next('label').andSelf().wrapAll('
'); });

Wenn Ihr Markup immer die exakt gleiche Reihenfolge hat, würde ich bevorzugen:

 var $set = $('form').children(); for(var i=0, len = $set.length; i < len; i+=2){ $set.slice(i, i+2).wrapAll('
'); }

Sollte wesentlich schneller sein.

Ref .: .wrapAll () , .undSelf () , .slice ()

 $('input+label').each(function(){ $(this).prev().andSelf().wrapAll('
'); });​

Wenn du so etwas hast:

   

Dann können Sie jQuery verwenden:

  jQuery("#input1").next().andSelf().wrapAll('
'); jQuery("#input2").next().andSelf().wrapAll('
');

und nimm folgendes:

 

Arbeitete für mich 🙂

jQuery-function wrapAll ermöglicht es Ihnen, mehrere Elemente zu umbrechen, aber wenn Sie ein DOM wie Sie haben, dann wird es nicht so gut funktionieren, da Sie einen Teil der Beschriftung und Eingabe nicht einfach mit einem Selektor vergleichen können. Ich empfehle, jedem Teil einige classn hinzuzufügen und dann wrapAll zu verwenden.

     $('.i1').wrapAll('
'); $('.i2').wrapAll('
');

Das wird dir geben