Оберните два последовательных divs в div динамически [дубликат]

Это самый простой способ, я думаю,

var reverse = function(str) {
    var arr = [];
    
    for (var i = 0, len = str.length; i <= len; i++) {
        arr.push(str.charAt(len - i))
    }

    return arr.join('');
}

console.log(reverse('I want a          
39
задан Probocop 13 August 2010 в 10:32
поделиться

4 ответа

Вы можете использовать метод .wrapAll().

$('form > input').each(function(){
    $(this).next('label').andSelf().wrapAll('<div class="test"/>');
});

Если ваша разметка всегда имеет тот же порядок, я бы предпочел использовать:

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

Should будет значительно быстрее.

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

90
ответ дан jAndy 19 August 2018 в 04:21
поделиться
  • 1
    Вероятно, это лучший способ сделать это. – RaYell 13 August 2010 в 10:43
  • 2
    Отлично, только то, что я получил, большое спасибо. – Probocop 13 August 2010 в 11:03
  • 3
    Как ни странно, я просто попробовал это на JS Fiddle, и, похоже, это не работает; однако ответ Джеймса, чуть ниже, делает. – user1729506 20 June 2013 в 18:28
  • 4
    Не что? В jQuery api docs: «Эта функция устарела и теперь является псевдонимом для .addBack (), который должен использоваться с jQuery 1.8 и более поздними версиями. & Quot; – isherwood 12 May 2014 в 18:24
  • 5
    .andSelf () был удален в jQuery 3.0. .addBack () необходимо использовать. – David 20 December 2016 в 20:40
$('input+label').each(function(){
    $(this).prev().andSelf().wrapAll('<div>');
});​
4
ответ дан James 19 August 2018 в 04:21
поделиться

Если у вас есть что-то вроде этого:

<input id="input1">
<label id="label1">
<input id="input2">
<label id="label2">

Затем вы можете использовать jQuery:

 jQuery("#input1").next().andSelf().wrapAll('<div id="newDiv" />');
 jQuery("#input2").next().andSelf().wrapAll('<div id="newDiv" />');

и получить это:

<div id="newDiv">
  <input id="input1">
  <label id="label1">
</div>
<div id="newDiv">
  <input id="input2">
  <label id="label2">
</div>

Работал для меня: -)

1
ответ дан PPvG 19 August 2018 в 04:21
поделиться

Функция jQuery wrapAll позволяет вам обернуть несколько элементов, но если у вас есть DOM, как вы писали, значит, он не будет работать слишком хорошо, так как вы не можете легко совместить часть ярлыка и ввода с селектор. Я предлагаю добавить некоторые классы в каждую часть, а затем использовать wrapAll.

<input class="i1"/>
<label class="i1"/>
<input class="i2"/>
<label class="i2"/>

$('.i1').wrapAll('<div/>');
$('.i2').wrapAll('<div/>');

Это даст вам

<div>
    <input class="i1"/>
    <label class="i1"/>
</div>
<div>
    <input class="i2"/>
    <label class="i2"/>
<div>
0
ответ дан RaYell 19 August 2018 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: