Je suis à peu près travaille avec les éléments suivants:JQuery et événement bouillonnant ... Encore une fois
var i;
var k = 5;
$('document').ready(function() {
$('#someElement').click(function (e) {
e.stopImmediatePropagation();
i++;
if (i >= k) {
my_function();
});
}
});
my_function() {
alert(i);
$('#myDisplay').text("You have clicked on '#someElement' " + i + "times");
}
'my_function() se déclenche lorsque je clique sur « #someElement », comme prévu, mais le Alertbox apparaît 5 FOIS!!!. Une solution rapide et évidente consisterait à placer le contenu de my_function() et à les placer dans l'instruction de contrôle if attachée à '#someElement', mais je suis très désireux de conserver la structure que j'ai décrite, et je suis sûr qu'il y a un moyen simple de le faire.
Des idées?
MISE À JOUR
Je suppose que l'origine du problème était avec l'appel de fonction à partir de mon événement « clic ». Il n'a pas été, je pense que le problème peut avoir quelque chose à voir avec l'appel imbriqué « ajaxComplete »:
var i = 0;
$('document').ready(function() {
$('<div id="someElement">Click me</div>').appendTo('body');
$('<div id="myDisplay"></div>').appendTo('body');
$('#someElement').click(function (e) {
i++;
$.get("test.html", function(html)
{
$(html).ajaxComplete(function()
{
my_function(i);
});
});
});
});
function my_function(n)
{
switch (n)
{
case 1:
alert(n);
$('#myDisplay').text("this is case " + n);
break
case 2:
alert(n);
$('#myDisplay').text("this is case " + n);
break
case 3:
alert(n);
$('#myDisplay').text("this is case " + n);
break
default:
alert('A great detective always breaks the case. :)');
break
}
}
J'ai omis le « k » constante, comme les déclarations de cas rendent le « si » déclaration l'exemple précédent est inutile. Le code ci-dessus fournit une meilleure illustration du problème que j'ai rencontré.
Toute aide sera grandement appréciée. :)
Indiquez d'abord correctement le code. – Anders