Я грубо работает со следующим:JQuery и восходящей цепочки события ... СНОВА
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()» огонь, когда я нажимаю на «#someElement», как и ожидалось, но alertbox выскакивает 5 РАЗ !!!.
Быстрое и очевидное решение состоит в том, чтобы разместить содержимое my_function() и поместить их в оператор управления if, прикрепленный к «# someElement», но я очень заинтересован в том, чтобы сохранить структуру, которую я изложил, и я Конечно, есть простой способ сделать это.
Любые идеи?
UPDATE
я первоначально предположил, что проблема была с вызовом функции из моего защелкивания события. Это не было, я думаю, что проблема может иметь что-то делать с вложенной «» 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
}
}
Я пропущенной константу «к», так как операторы случае оказывают «если» заявление предыдущий пример бесполезен. Приведенный выше код обеспечивает лучшую иллюстрацию проблемы, с которой я столкнулся.
Любая помощь будет очень признательна. :)
Отметьте код должным образом в первую очередь. – Anders