J'ai ce que j'espère est une question très simple. En fait, je pense que c'est idiot de ne pas l'avoir compris. J'ai un exemple de mon code ici:Fonction JS dans la fonction ne se fait pas appeler
http://jsfiddle.net/joeljoelbinks/pVSDL/
extrait:
function lighten() {
jQuery(this).css('opacity', '0.5');
jQuery(this).html('DO IT!');
}
function darken() {
jQuery(this).css('opacity', '1');
jQuery(this).html('CLICK TO EXPAND');
}
function expand() {
jQuery(this).off('click', expand);
jQuery(this).off('mouseover', lighten);
jQuery(this).on('click', contract);
darken(); //this doesn't get called
jQuery(this).animate({width: '200px', height: '200px'}, 500);
}
function contract() {
jQuery(this).off('click', contract);
jQuery(this).on('mouseover', lighten);
jQuery(this).on('click', expand);
lighten(); //this doesn't get called
jQuery(this).animate({width: '100px', height: '100px'}, 250);
}
C'est un prototype simplifié d'une expansion conception div Je suis sur un site de mise en œuvre, je travaille sur. Tout fonctionne comme prévu sauf que les fonctions lighten() et darken() ne sont pas appelées à l'intérieur des fonctions expand() ou contract(). J'ai essayé plusieurs façons de les appeler à partir des fonctions, mais elles ne fonctionnent pas. Remarquez que je les ai laissés là juste pour vous montrer que c'est ce qui doit être réparé. Comment puis-je les déclencher dans les fonctions expand/contract? Ils fonctionnent comme liés aux événements mouseover/mouseout que j'ai codés au début, mais pas dans l'autre fonction. Si je leur fais exécuter une fonction alert(), alors ils fonctionnent dans tous les contextes mais pas si j'essaie de modifier JQuery (this) avec eux.
Question supplémentaire: aussi, regardez en haut de la js: comment lier les deux variables aux mêmes événements par opposition au code actuel où je dois les lier séparément? J'ai essayé bind() et plusieurs autres choses, mais je ne peux les amener à se lier quand je les fais séparément, ce qui est une violation des principes SECS;)
Il serait appelé ... mais 'ceci 'ne serait pas ce que vous attendez ... Le contexte est faux. – ahren