我大致使用以下内容:
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");
}
正如预期的那样,当我单击“#someElement”时会触发“my_function()”,但警报框会弹出 5 次!!!。
一个快速而明显的解决方案是将 my_function() 的内容放入附加到“#someElement”的 if 控制语句中,但我非常热衷于保留我概述的结构,并且确信有一个简单的这样做的方法。
有任何想法吗?
更新
我最初认为问题出在我的“点击”事件中的函数调用上。不是,我认为问题可能与嵌套的“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
}
}
我省略了常量“k”,因为 case 语句使前面示例中的“if”语句无用。上面的代码更好地说明了我遇到的问题。
任何帮助都感激不尽。:)