2012-06-11 4 views
1

Ce que je dois est d'envelopper HTML autour d'un div courant, ce que je suis arrivé à ce jour:emballage jQuery div

HTML:

<input type="text" data-placeholder="username" /> 

devant être affiché comme:

<div class="placeholding-input"> 
    <input type="text" data-placeholder="username" /> 
    <label>Username</label> 
</div> 

Ce que je me suis tellement loin:

$.each($('input[type="text"], input[type="password"], textarea'), function(){ 
    var input = $(this); 
    var container = $('<div />').addclass('placeholding-input'); 
    input.wrap(container); 
    var label = $('<label />').html(input.data('placeholder')).appendTo(container); 
}); 

Mais ça ne marche pas pour une raison quelconque, je ne sais pas pourquoi.

Merci pour l'aide :)

Répondre

3
var container = $('<div />').addclass('placeholding-input'); 

Pour:

var container = $('<div />').addClass('placeholding-input'); 
//        ^--------------------- upperCase 

code complet:

$('input[type="text"], input[type="password"], textarea').each(function() { 
    var input = $(this); 
    var container = $('<div>').addClass('placeholding-input'); 
    var label = $('<label>').html(input.data('placeholder')); 
    input.wrap(container).after(label); 
});​ 

DEMO

+2

Ah bon œil compagnon +1 – AlienWebguy

+0

Ce ne fut pas le problème, merci quand même :) – onlineracoon

+0

@onlineracoon. Comment cela ne peut-il pas être le problème? – gdoron

1
var input = $(this).wrap((container = $('<div />').addClass('placeholding-input'))); 
input.after((label = $('<label />').html(input.data('placeholder')))); 

DONE, merci pour l'aide :)

1
$.each($('input[type="text"], input[type="password"], textarea'), function(){ 
    var input = $(this); 
    var container = $('<div />').addClass('placeholding-input'); // not addclass 
    var label = $('<label />').html(input.data('placeholder')); 
    input.wrap(container).after(label); 
}); 

DEMO

+1

..mm 'after', puis' wrap' va ajouter l'étiquette après la div. –

2

Essayez comme ci-dessous,

$(function() { 
    $.each($('input[type="text"], input[type="password"], textarea'), function() {  
     var input = $(this); 
     var container = $('<div />').addClass('placeholding-input'); 
     var label = $('<label />').html(input.data('placeholder')); 
     input.wrap(container).after(label); 
    }); 
}); 

DEMO:http://jsfiddle.net/skram/CsGUv/

1

En plus de l'erreur de syntaxe dans addclass, ajoutez l'étiquette t o la div avant d'envelopper l'entrée.

http://jsfiddle.net/Yb9QV/

$.each($('input[type="text"], input[type="password"], textarea'), 
     function(){ 
      var input = $(this); 
      var container = $('<div />').addClass('placeholding-input'); 

      var label = $('<label />') 
       .html(input.data('placeholder')).appendTo(container); 

      input.wrap(container); 
});​