EDIT **Prevenire errore "troppo ricorsione" in jQuery
ho questo evento click
$('.next-question').click(function() {
$('td').removeClass('highlight-problem');
var r = rndWord;
while (r == rndWord) {
rndWord = Math.floor(Math.random() * (listOfWords.length));
}
$('td[data-word="' + listOfWords[rndWord].name + '"]').addClass('highlight-problem');
$('td[data-word=' + word + ']').removeClass('wrong-letter').removeClass('wrong-word').removeClass('right-letter');
var spellSpace = $('td[data-word=' + listOfWords[rndWord].name + ']').hasClass('right-word');
if (spellSpace) {
$('.next-question').trigger('click');
} else {
$("#hintSound").attr('src', listOfWords[rndWord].audio);
hintSound.play();
$("#hintPic").attr('src', listOfWords[rndWord].pic);
$('#hintPic').show();
$('#hintPicTitle').attr('title', listOfWords[rndWord].hint);
$('#hintPicTitle').show();
}
});
Quando il debug nella console si dice too much recursion
che significa che è in una sorta di circolo senza fine a questo punto. Penso che sia a causa dell'evento trigger("click")
nell'istruzione if
, perché ho visto qualcosa di simile online.
Fondamentalmente, voglio dire, se dato parola ha la classe right-word
poi passare (da qui il grilletto), altrimenti ...
C'è un altro modo di scrivere che non vada in crash?
Ecco un violino: http://jsfiddle.net/Dxxmh/112/
ISTRUZIONI: Clicca le lettere sulla destra di precisare l'area evidenziata nella griglia (Le immagini per aiutare si scrive le parole non sono disponibili in un violino in modo da avere a precisare utilizzando la console, cercando il TD)
Cosa intendi per "andare avanti"? Stai cercando di filtrare un'azione definita altrove? –
Qual è il tuo obiettivo? Hai ragione su 'trigger' - questo è il luogo che può causare la ricorsione. E devi avere qualche meccanismo per fermare la ricorsione (vai al ramo else o ferma l'esecuzione del gestore in altro modo). Ma è difficile dire come potrebbe essere fermato correttamente. –
vai avanti come continua a fare il ciclo fino a quando non trova uno senza quella classe @dystroy –