2012-12-21 4 views
0
<div class="parent"> 
    <span>nameValue</span> <input type="text" value=""/> 
    <span>addressValue</span> <input type="text" value=""/> 
    <span>phoneValue</span> <input type="text" value=""/> 
    <span>emailValue</span> <input type="text" value=""/> 

    <div class="edit">Edit</div> 
</div> 

$(document).ready(function(){ 
    $('.edit').click(function(e){ 
     $(this).parent().find('input').val(v); // something like var v = $(this).prev().text() ????? 
    }); 
}); 

J'essaie de définir la valeur de toutes les entrées au texte de leur élément prev correspondant. Mais comment puis-je accéder à son élément prev? Il n'y a pas de id pour les éléments d'entrée.set entrée val() à prev(). Text()

Répondre

1
$(this).closest(".parent").find("input").val(function() { 
    return $(this).prev().text(); 
}); 

Vous pourriez aussi bien utiliser une boucle .each et utilisez val() sur chacun d'eux, mais la fonction de rappel est la méthode plus propre.

+0

Vous avez raison, j'ai corrigé cela. Cela aurait dû être fait seulement si c'est un identifiant. – Bergi

+1

Court et doux. –

1

Je ne l'ai pas testé car je suis sur le point d'aller au lit, mais cela devrait faire l'affaire pour vous.

$(this).parent().find("input").each(function(){ 
    $(this).val($(this).prev().html()); 
}); 
0
$('.edit').click(function(e){ 
    $inputs = $(this).parent().find('input'); 
    $inputs.each(function(){ 
     var v = $(this).prev("span").text(); 
     $(this).val(v);     
    }); 
});​ 

Voir this fiddle.

0
$(document).ready(function(){ 
$('.edit').click(function(e){  
    var parent = $(this).parent(); 
    parent.children('span').each(function(){ 
      $(this).next().val($(this).text()); 
    }); 
}); 

});

Est-ce vrai?

0
$('.edit').click(function(e){ 
    $(this).closest(".parent").find("input[type='text']").each(function(){ 
     $(this).val($(this).prev().text()); 
    }); 
});​