2010-05-10 5 views
0

Comment envoyer une variable javascript à une fonction jquery ultérieure? Voici mon code.Comment envoyer une variable javascript à une fonction jquery ou à un ensemble d'accolades?

<script type="text/javascript"> 
$(function() { 
    var name = $("#name"), 
     email = $("#email"), 
     password = $("#password"), 
     itemid = $("#itemid"), 
     tips = $(".validateTips"); 

    function updateTips(t) { 
     tips 
      .text(t) 
      .addClass('ui-state-highlight'); 
     setTimeout(function() { 
      tips.removeClass('ui-state-highlight', 1500); 
     }, 500); 
    } 

    $("#dialog-form").dialog({ 

     autoOpen: false, 
     height: 320, 
     width: 350, 
     modal: true, 
    /* 
     buttons: { 
      'Change category': function() { 
      alert("The itemid2 is "+itemid2); 

       var bValid = true; 
       $('#users tbody').append('<tr>' + 
       '<td>' + name.val() + '</td>' + 
       '<td>' + email.val() + '</td>' + 
       '<td>' + password.val() + '</td>' + 
       '<td>' + itemid.val() + '</td>' + 
       '</tr>'); 

       $(this).dialog('close'); 

      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     }, 
     */ 
     close: function() { 
      allFields.val('').removeClass('ui-state-error'); 
     } 
    }); 



    $('.changecategory') 
     .button() 
     .click(function() { 
       var categoryid = $(this).attr("categoryid"); 
       var itemid = $(this).attr("itemid"); 
       var itemid2 = $(this).attr("itemid"); 
       var itemtitle = $(this).attr("itemtitle"); 
       var parenttag = $(this).parent().get(0).tagName; 
       var removediv = "itemid_" +itemid; 
     alert("The itemid is "+itemid); 

      $('#dialog-form').dialog('open'); 




     }); 

}); 
</script> 

Je vais le décomposer.

  1. Le .changecategory section se produit en premier lorsqu'une image sur ma page est cliqué.
  2. $ ("# dialogue-form"). Dialog ({ est alors appelé, et l'ID de l'élément variable n'est pas passé à cette fonction.) Comment puis-je passer une variable d'une fonction à une autre?

Est-il possible que je peux passer une variable à une autre fonction jquery sans avoir à recourir de un cookie avec javascript, puis en utilisant jquery de le lire?

+0

Vous ne passez rien à aucune fonction. Tout d'abord. Votre premier appel arrive à convertir un élément en un dialogue. ALORS vos éléments .changesection sont convertis en boutons. Et quand vous appelez 'dialog '(' open ')', vous n'y passez rien ... Je ne suis pas sûr de comprendre ce que vous aimeriez demander. –

+1

* BTW *: Vous pouvez exclure le code inutilisé. La fonction 'updateTips' est complètement inutile et devrait être omise pour que nous n'ayons pas à parcourir tout le code et à voir ce qui se passe. –

+0

Le premier ** itemid ** de la fermeture dom ready ou le ** itemid ** de la fermeture de fonction de clic de bouton? –

Répondre

1

Votre appel dialog('open') ne pourra voir aucune de vos variables itemid que vous avez définie, car elles se trouvent dans une fermeture complètement différente.

Si vous nous dites quel plugin de dialogue vous utilisez, nous pourrions vous aider un peu. S'il est jQuery UI Dialog un widget alors je vous suggère de faire ceci:

$('.changecategory') 
    .button() 
    .click(function() { 
     var scope = $(this); // for the sake of code speed 
     var categoryid = scope.attr("categoryid"); 
     var itemid = scope.attr("itemid"); 
     var itemid2 = scope.attr("itemid"); 
     var itemtitle = scope.attr("itemtitle"); 
     var parenttag = scope.parent().get(0).tagName; 
     var removediv = "itemid_" +itemid; 
     alert("The itemid is "+itemid); 
     $('#dialog-form').dialog('option', 'itemId', itemId); // store the id 
     $('#dialog-form').dialog('open'); 
    }); 

Donc, avant d'ouvrir la boîte de dialogue, vous pouvez définir l'option interne de certains dialogue qui seront disponibles dans la fermeture de la fonction ouverte que l'option de dialogue.

L'autre (non recommandé) serait d'utiliser l'approche de @ Tgr avec les globals.

+0

Je l'ai essayé et je n'arrive pas à le faire fonctionner. Recherchez les lignes où il est indiqué // NOUVELLE LIGNE AJOUTÉE Caisse http://codedumper.com/odate et répondez s'il vous plaît. – desbest

0

Nest l'ensemble $("#dialog-form").dialog({ dans l'événement de clic $('.changecategory')

Vous aurez alors être capable de se référer à l'itemid dans la boîte de dialogue.

+0

Pour autant que je puisse voir, il appelle 'dialogue ('open')' dans l'événement click ... –

0

Vous pouvez simuler des variables globales en utilisant les propriétés de l'objet window: window.itemid = $('#itemid'); (En fait, les variables qui ne sont pas définies dans un champ de fonction sont propriétés de window.)

Vous pouvez également attribuer des valeurs aux objets DOM avec la fonction data() de jQuery: $('#dialog-form').data('itemid', itemid); dans le gestionnaire de clic, puis var itemid = $('#dialog-form').data('itemid'); dans la boîte de dialogue.

Questions connexes