2009-08-10 4 views
2

Souvent, je trouve que j'ai besoin d'utiliser jeditable sur plusieurs zones, chacune nécessitant des paramètres différents. Par exemple, j'utilise jeditable avec un type d'entrée autosuggest, puis j'ai besoin de transmettre différentes sources de données aux différentes entrées.Jeditable: comment définir les paramètres basés sur les attributs de l'élément dom

Je voulais utiliser une seule instance du plug-in modifiable, et ont essayé d'assigner attr valeurs au script, mais évidemment cela ne fonctionne pas la façon dont je suis approcher ..

Je suis En espérant que quelqu'un puisse me guider un peu ..

Essentiellement je voudrais pouvoir définir une valeur de paramètre jeditable basée sur la valeur d'un attribut de l'élément dom qu'il manipule.

quelque chose comme:

$('.editme').editable('savedata.php',{ 
    loadurl : 'loaddata.php', 
    loaddata : { handle: $(this).attr('rel') } 
}); 

alors je pourrais simplement spécifier différentes sources de charge avec:

<div id="fruits" class="editme" rel="myfruits">apples</div> 

Je ne trouve pas le mot-clé ce à travailler de cette façon ..

Comment puis-je accéder aux attributs de l'élément dom en cours de manipulation dynamique? pour chaque liaison jeditable? Voici un autre exemple de ce que je veux faire: authorsList = "" .split (",");

// extend jeditable with autocomplete 
    $.editable.addInputType('autoc', { 
     element: function(settings, original) { 
     var input = $("<input />").autocomplete(settings.mdata, settings.autoc); 
     $(this).append(input); 
    return input; } 
    }); 

$('.editable.authors').editable('savedata.php',{ 
    type : "autoc", 
    mdata : $(this).attr('rel'), // should hold the name 'authorsList' 
    onblur : 'ignore', 
    autoc : { multiple: true, 
       multipleSeparator: ',' }, 
    loadurl : 'loaddata.php', 
    loadtype : 'POST', 
    loaddata : {handle: function(){ return eval($("#objhandle").val())}, lookuptype: 'mirror'}, 
    submit : 'save', 
    cancel : 'cancel', 
    tooltip : "Click to edit", 
    style  : "inherit", 
    cssclass : 'jedi', 
    id  : "field", 
    name  : "data", 
    submitdata : { 
     storetype: 'mirror', 
     handle: function(){return eval($("#objhandle").val())}, 
     timestamp: function(){return eval($("#objtimestamp").val())} 
    } 
}); 

Répondre

3

Attention, le code totalement non testé, mais quelque chose comme devrait fonctionner:

$('.editme').each(function() { 
    $(this).editable('savedata.php',{ 
     loadurl : 'loaddata.php', 
     loaddata : { handle: $(this).attr('rel') } 
    }); 
}); 

De cette façon, le score de ce doit être correcte lors de l'initialisation Jeditable sur l'élément.

+0

merci pour la réponse rapide :) !! .. et oui ça devrait vraiment marcher .. donc ça doit marcher .. je ne sais pas pourquoi je ne peux pas l'obtenir .. mais il me manque probablement quelque chose de simple à cause de la fatigue de codage .. va débugger plus tard alors maintenant je sais que je ne suis pas essentiellement en train de l'essayer dans le mauvais sens .. :) –

+0

Je déplace le suivi de mon «vrai» compte, celui-ci a été méticuleusement fait avec un nouveau compte .. Pour la suite, s'il vous plaît voir http://stackoverflow.com/questions/1277570/ –

+0

ne peut toujours pas gt cela pour travailler .. Je continue cette question ici: http://stackoverflow.com/questions/1277570 pour une raison quelconque le $ (this) .attr ('rel') ou tout autre, ainsi que $ (this) .html() etc. sont tous NON DEFINIS. $ (this) est [object Object] et ce est [object HTMLDocument] –

0

cela a fonctionné pour moi

$(this).data('rel) 

et pour le html

<div id="fruits" class="editme" data-rel="myfruits">apples</div>