2009-01-21 3 views
2

J'ai un peu de travail AJAX qui apporte un élément de formulaire supplémentaire dont je n'ai pas besoin dans le DOM. Je n'ai pas la possibilité de le supprimer côté serveur, donc je cherche du jQuery ou du JavaScript classique qui me permettra de capturer tous les éléments enfants du formulaire, de supprimer le formulaire dont je n'ai pas besoin et enfin ajoutez les éléments enfants au DOM.Utilisation de jQuery pour supprimer un deuxième élément de formulaire sans perdre les éléments enfants

Toute aide serait appréciée

EDIT: Merci pour les réponses rapides, le ci-dessous est ce que j'ai utilisé et il fonctionne parfaitement

  // Captures the children 
      var children = $("form:eq(1)").children(); 
      // Removes the form 
      $("form:eq(1)").remove(); 
      // append the child elements back into the DOM 
      $("#fillDiv").append(children); 
+0

@Toran: Ma solution serait faire ce que vous avez demandé, mais vous devriez probablement utiliser quelque chose comme @ solution de Staicu plutôt que d'ajouter la forme au dom alors essayant d'enlever et de laisser ses enfants ... – Prestaul

+0

J'avais juste besoin de pouvoir facilement effacer une div dont les éléments enfants étaient créés de façon imprévisible. Je viens d'utiliser une légère variation sur votre solution: $ ("# containerDiv"). Children(). Remove(); Et j'étais tellement d'argent et je ne le savais même pas. Merci beaucoup. – Pete

Répondre

6

Plutôt que d'utiliser la méthode .html() (qui provoquera vous faire perdre des événements associés à des éléments de formulaire), vous devez déplacer les nœuds enfants:

// grab the child nodes 
var children = $('#badForm').children(); 
// or var children = $('#badForm > *'); 

// move them to the body 
$(body).append(children); 

// remove the form 
$('#badForm').remove(); 
+0

vous avez raison monsieur! Merci pour la réponse rapide! –

+0

@Toran: Cela fera ce que vous avez demandé, mais vous devriez probablement utiliser quelque chose comme la solution @ Staicu plutôt que d'ajouter le formulaire au dom puis d'essayer de retirer et de laisser ses enfants ... – Prestaul

2

Si vous avez du code ajax comme ceci:

$.ajax({ 
    type: "get", 
    url: "url", 
    data: , 
    cache: false, 
    success: function(data){ 

    } 
}); 

Vous pouvez ajouter la fonction success ceci:

$(data).find('#whatYouNeed').appendTo('#whereYouNeed') 

De cette façon, vous pouvez extraire tout ce que vous voulez à partir de cette page :)

+0

Ceci est certainement une meilleure option que ajouter la forme au dom puis essayer d'extraire ses enfants et de l'enlever. @Toran, si vous avez un appel ajax retournant html alors vous devriez utiliser cette méthode. – Prestaul

1

Votre question est toujours d'actualité, mais il y a mieux répond ces jours-ci.

  1. méthode unwrap: http://api.jquery.com/unwrap/
  2. $element.replaceWith($element.contents());
Questions connexes