2009-09-09 8 views
0

Hallo,Jquery - comment obtenir l'élément qui a fait le poste

J'ai code suivant jquery pour appeler la méthode du contrôleur ASP.NET MVC qui retourne le code html créé à l'aide Vue partielle.

$("form[action$='ShowProperties']").submit(function() { 
$.post($(this).attr("action"), $(this).serialize(), function(response) { 

     $(this).children("div.serviceproperties").html(response); 
     // $("div.serviceproperties").html(response); 

    }); 
    return false; 
}); 

html Rendus ressemble à ceci:

<ul> 
<li class="serviceactionitem"> 
    <form method="post" action="/Service/ShowProperties"> 
     <input type="submit" value="Show General" name="[Show]"/> 
     <input id="id" type="hidden" value="1" name="id"/> 
     <input id="serviceitem" type="hidden" value="general" name="serviceitem"/> 
     <div class="serviceproperties"> </div> 
    </form> 
</li> 
<li class="serviceactionitem"> 
    <form method="post" action="/Service/ShowProperties"> 
     <input type="submit" value="Show Specific" name="[Show]"/> 
     <input id="id" type="hidden" value="1" name="id"/> 
     <input id="serviceitem" type="hidden" value="specific" name="serviceitem"/> 
     <div class="serviceproperties"> </div> 
    </form> 
</li> 

La réponse est html qui doivent être mis à l'intérieur de div élément qui est à l'intérieur de l'élément de forme. J'ai plusieurs éléments de formulaire sur la page et je ne sais pas comment mettre à jour le div à l'intérieur de la forme appropriée. Le code commenté, bien sûr, met à jour les divs de tous les formulaires de la page.

La chose principale est que $ (this) ne renvoie pas l'élément de formulaire, ce qui est probablement normal. J'ai donc besoin de la manière d'adresser l'élément de forme approprié à l'intérieur de la fonction qui gère la réponse et de trouver et modifier la div à l'intérieur de celle-ci.

Merci

Répondre

1

simplement le formulaire resélectionner:

$("form[action$='ShowProperties'] div.serviceproperties").html(response); 

Ou capturer l'élément premier:

$("form[action$='ShowProperties']").submit(function() { 
var $form = $(this); 

$.post($(this).attr("action"), $(this).serialize(), function(response) { 

     $("div.serviceproperties",$form).html(response); 

    }); 
    return false; 
}); 
+0

Apparemment, il n'a pas été aussi simple que cela pour moi :) La première option ne fonctionne pas pour moi parce que j'ai plus d'un élément qui répond à la requête, mais la seconde fonctionne comme charmé. Merci beaucoup Philippe –

Questions connexes