2009-04-09 7 views
4

Étant donnécomme paramètre dans jEditable

$(".foo").editable("script.php") 

ID du parent Comment puis-je passer l'ID de parent de .foo comme paramètre? J'ai essayé

$(".foo").editable("script.php", { 

    submitdata: { 

      parent_id: $(this).parent().attr('id') 

       } 
    }); 

et toutes les variantes de ce que je peux penser, mais il semble tout comme les $ (ce) objet ne fonctionne pas dans ce contexte.

Répondre

-1

Je voudrais juste faire: (. Foo).

$(".foo").editable("script.php", { submitdata: { parent_id: $(".foo").parent().attr('id') } });

Vous avez également une faute de frappe dans votre question, vous avez $ .editable() au lieu de $ ("foo") modifiable(). Si cela est aussi dans votre code actuel, cela peut être la source du problème.

+0

C'était juste une faute de frappe dans la question. Merci pour la réponse, qui obtient l'ID du parent, et serait bien si c'était $ ("# foo") au lieu de $ (". Foo") .. mais dans ce cas, c'est une classe, et il y a plusieurs $ (". foo") s ... donc j'en ai besoin pour se référencer, et pas toute la classe. – Matthew

15

J'ai eu le même problème ici, a trouvé la solution suivante:

$('.jeditable').each(function() { 
    var $this = $(this); 
    $this.editable('submit.jsp', { 
     submitdata : { parent_id : $this.parent().attr('id') } 
    }); 
}); 
+7

Cela fonctionne mais cela vaut probablement la peine d'expliquer ce qui se passe ... Se référer à '$ (this)' à l'intérieur de '.editable()' ne fonctionnera pas, on fait défiler les éléments souhaités un par un en utilisant '.each() '. Inside est l'appel normal à '.editable', mais avec l'objet jQuery copié dans une variable que jEditable * peut * lire - et sur lequel vous pouvez ensuite exécuter toutes les commandes habituelles de jQuery. L'utilisation de '$' plutôt que 'var this' est un aide-mémoire pour distinguer les variables normales et les objets jQuery - http://stackoverflow.com/questions/205853/why-would-a-javascript-variable-start-with -un-dollar-signe –

0

Vous pouvez faire un appel Ajax afin que vous puissiez passer tout (si vous êtes à la recherche pour l'avenir, peut-être que vous allez ajouter quelques fonctionnalités..).

Exemple:

$('.edit').editable(
    function(value, settings) { 

     // prepare the data, add all parameters you want 

     var data = "param1=value1" + 
      "&param2=value2"; 

     var ret = ""; 

     // make the ajax call to do the work (not async) 
     $.ajax({ 
      type: "POST", 
      url: "page.php", 
      data: data, 
      async: false, 
      success: function(msg) { 

       if (msg.length != 0) { 

        // set the value to write in the element 
        ret = msg; 

       } 

      } 

     }); 

     // return the element to save into the element 
     return ret; 

    }, { 

     // set the jeditable setting 
     cssclass: 'classname' 
    } 

); 

Je pense que cette méthode est plus flexible pour gérer tous les cas.

Questions connexes