9
votes

Envoyer une fonction de rappel JQuery dans une variable

J'ai cette fonction jQuery xxx

Ça fonctionne bien Quand je fais: xxx

mais je veux envoyer la fonction de rappel à l'intérieur de la variable (rappel) C'est-à-dire: au lieu de bouillir le $ ("# widget_accordion"). Accordéon ({Fillspace: True}); À l'intérieur de la fonction de rappel, je veux l'envoyer: xxx

puis la fonction doit être quelque chose comme: xxx

mais Cela ne fonctionne pas

Merci d'avance pour votre aide


2 commentaires

Avez-vous essayé de rappeler (); ?


Je l'ai essayé mais le problème est que le rappel est: $ ("# widget_accordion"). Accordéon ({Fillspace: True});


5 Réponses :


2
votes

Vous devez appeler la fonction à l'intérieur du rappel

function example(file, targetwidget, callback){

$(targetwidget).load(file, {limit: 25}, function(){
    callback();
});


3 commentaires

mais rappel = $ ("# widget_accordion"). Accordéon ({Fillspace: True}); je vais essayer


Vous devez toujours invoquer la fonction en l'appelant avec ()


En supposant que le rappel est en effet une fonction valide!



1
votes

Cela devrait fonctionner:

$(targetwidget).load(file, {limit: 25}, callback);


1 commentaires

Ça ne fonctionne pas car la valeur à l'intérieur du rappel est la forme de texte jQuery point de vue



1
votes

Eh bien .. vous faites de cette façon:

function example(file, targetwidget, callback){

$(targetwidget).load(file, {limit: 25}, function(){
    if(typeof(callback)==='function'){
     callback.call(this, 'other parameters');
    }
});


1 commentaires

Alors ... il semble que le rappel n'est vraiment pas une fonction :)



1
votes

Puisque vous passez une chaîne de texte, vous devez l'évaluer:

function callback() {
    $("#widget_accordion").accordion({fillSpace: true});
}

function example(file, targetwidget, callback){

    $(targetwidget).load(file, {limit: 25}, function(){
        if(typeof(callback)==='function'){
            callback.call(this);
        }
    });

example('http://example.com/', "#divid", callback);


2 commentaires

Répondu il y a 3 minutes Googletorp 666 ● 10 -> Et nous savons tous que l'EVAL est mauvais!


Ouais, lisez mon commentaire Stackoverflow.com/Questtions/1153241/... . Il suffit d'utiliser appel () au lieu d'eval ()



19
votes

Pour réussir le rappel, la variable doit être de type de type. N'importe lequel d'entre eux devrait fonctionner: xxx


1 commentaires

Pour ajouter cette excellente réponse, vous voudrez peut-être ajouter une validation à cela également, je suggère d'utiliser JQuery's $. Fishiscifunction () ( API.JQUERY.COM/JQUERY.FUNCTION )