Dans le code ci-dessous, j'utilise une fonction unique qui vous permettra de stocker et récupérer votre index.
La fonction index
crée un closure en retournant la déclaration et en retournant une autre fonction. Cela signifie que la variable _index
sera toujours disponible (pensez-y comme si la variable était allouée sur le tas au lieu de la pile-frame, ie malloc-ed) une fois que la fonction (externe) est revenue, et comme vous pouvez voir la fonction est auto-invoquant, en raison de la }();
sur la dernière ligne de la fonction, retournant ainsi immédiatement lors de l'analyse.
Ensuite, lorsque vous appelez à nouveau la fonction index
(que vous appellerez maintenant la fonction interne qui prend un argument formel, ind
), vous pouvez passer votre index et si vous le faites, la fonction le stockera dans le _index
variable que j'ai mentionné plus tôt ... c'est-à-dire la variable qui est toujours disponible après la fonction externe retournée.
Si vous ne transmettez pas un argument (c.-à-d. Appelez la fonction comme telle: index()
), la fonction renvoie uniquement votre variable stockée. La logique derrière ceci est que si un paramètre n'est pas passé, la valeur de l'argument réel est undefined
. Ainsi, la fonction vérifie si la valeur est undefined
, et si c'est le cas, elle retourne votre variable. Par la suite, vous avez une fonction ready
imbriquée à l'intérieur de votre fonction externe ready
. C'est parce que $(function() {
est le même que $(document).ready(function(){
. Je fixe cela dans le code ci-dessous:
var index = function() {
var _index;
return function (ind) {
if (typeof ind !== "undefined") {
_index = ind;
}
return _index;
};
}();
function reorder(job_index)
{
index(job_index);
$('#dialog').dialog('open');
}
$(function() {
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 250,
width: 600,
modal: true,
buttons: {
'Yes, use the number above': function() {
var jobID = $("#jobnumber").val();
$.post("rpc.php", {
job_index: index(),
jobID: jobID,
method: "reorder"
},
function (data, textstatus) {
alert(data.message);
},
"json");
},
'No, create a new number for me': function() {
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
}
});
});
Une autre façon de le faire est en utilisant la méthode data
que nickf mentionné. Cela vous permettra de stocker l'index directement dans votre élément, comme ceci:
function reorder(job_index)
{
$('#dialog').data("job", job_index).dialog('open');
}
$(function() {
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 250,
width: 600,
modal: true,
buttons: {
'Yes, use the number above': function() {
var jobID = $("#jobnumber").val();
$.post("rpc.php", {
job_index: $("#dialog").data("job"),
jobID: jobID,
method: "reorder"
},
function (data, textstatus) {
alert(data.message);
},
"json");
},
'No, create a new number for me': function() {
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
}
});
});
juste un conseil: vous avez une fonction 'read'y imbriquée dans votre fonction' ready' externe. C'est parce que $ (function() {'est le même que' $ (document) .ready (function() {' –
Ok merci, je ne savais pas que – jason