Je souhaite que la fonction ci-dessous soit plus flexible et accepte plusieurs rappels à d'autres fonctions si elles sont définies dans les arguments.Autoriser la fonction javascript à accepter n'importe quel nombre d'arguments
$(function() {
function icisDashBox(colorElem, thisWidth, thisHeight, completeCallBack) {
$(colorElem).colorbox({
transition: 'none',
innerWidth: thisWidth,
innerHeight: thisHeight,
opacity: '0.5',
onOpen: function() {
},
onLoad: function() {
},
onComplete:function() {
$('#cboxLoadedContent').wrap('<div id="icis_dialog_msg" />');
completeCallBack();
},
onCleanup: function() {
},
onClosed: function() {
$('#cboxLoadedContent').unwrap();
}
});
}
icisDashBox('.example9', '500', '500', completeFunction);
function completeFunction() {
var fooClass = $("#colorbox").addClass("FOO");
var barClass = $("#colorbox").addClass("BAR");
var ajaxCnt = $.ajax({
type: "GET",
url: "http://www.payso.me.uk",
dataType: "html",
success: function(data) {
$("#colorbox").addClass("AJAX SUCCESS");
}
});
return {
x : fooClass,
y : barClass,
z : ajaxCnt
};
}
Ainsi, dans un monde idéal ma fonction ressemblerait à ceci sans déclarer explicitement les arguments:
function icisDashBox() { function code here }
Est-ce possible? Aussi, si les arguments ne sont pas définis, comment puis-je gérer cela? Par exemple, si un appel à la fonction a plusieurs callbacks définis et qu'un autre n'en a qu'un seul, il y a un moyen de gérer le manque de présence des callbacks.
Cheers,
:)
Merci Nick je vais regarder dans cette approche je pense. Je suppose que les 'paramètres' deviennent globaux en raison de l'omission de 'var' et devraient avoir un espace de noms? – RyanP13
@ RyanP13 - Non pas global, puisque c'est un nom de paramètre local pour la fonction, vous y êtes déjà couvert :) –
+1 Pour passer un objet, gardez également à l'esprit que chaque fois que vous rencontrez une situation où vous ne pouvez pas rappelez-vous les arguments (comme par exemple votre fonction prend 5 ints) refactoriser pour prendre un objet. –