2011-10-20 3 views
0

Permettez-moi de partager ma part jQuery premier

$(".btnUpdateInput").click(function() { 
      //alert("Update"); 
      var BldDocumentId = $("#BldDocId").val(); 

      var BldinstructionId = $("#BldIPInstnId").val(); 
      var InputFieldId = $("#InputFieldId").val(); 
      var InputFieldValue = jQuery.trim($(this).parent().prev().text()); //$("#InputFieldValue").val(); 
      var InputFieldUserValue = jQuery.trim($(this).prev().val()); // $(".user_input_value").val(); 
      alert(BldDocumentId + "," + BldinstructionId + "," + InputFieldId + "," + InputFieldValue + "," + InputFieldUserValue); 

      var postResult; 
      alert($(this).get()); 
      $.post("/Build/UpdateInputField", 
       { bldDocId: BldDocumentId, bldInstnId: BldinstructionId, inputFieldId: InputFieldId, inputFieldValue: InputFieldValue, inputFieldUserValue: InputFieldUserValue }, 
       function(result) { 
       postResult = result; 
        //Either this should function** 
        alert($(this).get()); // returned Object[Object] but expected the clicked button 
        alert($(this).parent().get());// returned null 
        alert($(this).parent().next().get());//returned null 
        alert($(this).parent().next().children().first().get());// returned null 

        // $(this).parent().next().show(); 
        // $(this).parent().next().children().first().text(InputFieldUserValue); 
        // $(this).parent().hide(); 
       }); 

       alert(postResult); 
      //Or this should function** 
      if (postResult == true) { 
       $(this).parent().next().show(); 
       $(this).parent().next().children().first().text(InputFieldUserValue); 
       $(this).parent().hide(); 
      } 
     }); 

maintenant laissez-moi vous expliquer mon problème. J'ai besoin de montrer et de masquer quelques divs par rapport au bouton "btnUpdateInput" que j'ai cliqué. Je l'ai essayé de deux manières: 1. J'ai donné les lignes suivantes dans la dans la partie de la réussite de .post $

$.post("/Build/UpdateInputField", 
       { bldDocId: BldDocumentId, bldInstnId: BldinstructionId, inputFieldId: InputFieldId, inputFieldValue: InputFieldValue, inputFieldUserValue: InputFieldUserValue }, 
       function(result) { 
       postResult = result; 
        //Either this should function** 
        alert($(this).get()); // returned Object[Object] but expected the clicked button 
        alert($(this).parent().get());// returned null 
        alert($(this).parent().next().get());//returned null 
        alert($(this).parent().next().children().first().get());// returned null 

        // $(this).parent().next().show(); 
        // $(this).parent().next().children().first().text(InputFieldUserValue); 
        // $(this).parent().hide(); 
       }); 

2. ou obtenir la valeur de postResult sortir et comparer et faire la même chose là-bas. Le code ci-dessous est:

if (postResult == true) { 
       $(this).parent().next().show(); 
       $(this).parent().next().children().first().text(InputFieldUserValue); 
       $(this).parent().hide(); 
      } 

Aucun de mes travaux. Dans 1 je ne reçois pas $ (this) comme le bouton 'btnUpdateInput' que je clique et 2. la valeur de postResult est indéfinie car il n'y a pas de délai pour que postResult soit assigné au résultat de l'action post.

S'il vous plaît aidez-moi avec l'un des scénarios.

+0

Il sera plus utile si vous aviez également posté le code source HTML pertinent. – reporter

+0

Que voulez-vous vraiment par $ (this)? – rhapsodyn

Répondre

1

Ceci est l'élément de votre IN actuel. Donc dans les SUCCES c'est dans le retour.

donc dans la méthode que vous pourriez faire:

$(".btnUpdateInput").click(function(e) { 
var self = e; 
//code 
alert($(self).get()); // returned Object[Object] but expected the clicked button 
alert($(self).parent().get());// returned null 
alert($(self).parent().next().get());//returned null 
alert($(self).parent().next().children().first().get());// returned null 
} 

est auto Semble également utilisé par défaut ....

Essayez ceci:

$(".btnUpdateInput").click(function(e) { 
var myButton = $(this); 
//code 
alert($(myButton).get()); // returned Object[Object] but expected the clicked button 
alert($(myButton).parent().get());// returned null 
alert($(myButton).parent().next().get());//returned null 
alert($(myButton).parent().next().children().first().get());// returned null 
} 
+0

toujours obtenir le même résultat que précédemment :(. Toutes les alertes retournant null sauf le 1er –

+0

mis à jour :) :) –

+0

merci ... cela a fonctionné –