我不太确定这里发生了什么,并且觉得我可能会遗漏一些可能非常明显的东西,但我有一个if else,其中两个语句都被调用。如果有人能够对此有所了解,那就太棒了。下面的代码是使用asual,应该检测是否已加载div $('#' + $.address.hash()
。但是,if和else事件都是按顺序触发的。实际上,else语句会引发两次......
$('#lmit_back').show(400, function() {
if($('#' + $.address.hash() ).length == 0) {
$('#init').load('inithandler.php', { 'address' : $.address.hash() }, function() {
$('#' + $.address.hash()).fadeIn(1000, function() {
$('#remn').load('pagehandler.php',{ 'address' : $.address.hash() });
});
});
}
else {
alert('hey');
}
});
以下是所有代码。我无法确定哪些因素可能导致它执行两次,除非它与address.change有关,我不熟悉它。
if(($ .address.hash()=='')){$ .address.hash('home');}
$('#lmit_back').click(function() {
$.address.hash('home');
});
$.address.change( function() {
if (!($.address.hash() == 'home'))
{
var exception = '.' + $('[href="#' + $.address.hash() + '"]').parent().attr('class');
$('#left_menu_bar li:not(' + exception + ')').hide(300,function() {
$(exception).show( function() {
$('#left_menu_bar').animate({ width:'100%'},400, function() {
$('#lmit_back').show(400, function() {
if ($('#' + $.address.hash() ).length === 0)
{
$('#init').load('inithandler.php', { 'address' : $.address.hash() } , function() {
$('#' + $.address.hash()).fadeIn(1000, function() {
$('#remn').load('pagehandler.php',{ 'address' : $.address.hash() });
});
});
}
else
{
alert('nigs');
}
});
});
});
});
}
else
{
$('#left_menu_bar').animate({ width:'251px'}, function() {
$('#left_menu_bar li').show( function() {
$('#lmit_back').hide();
});
});
$('#left_menu_bar').css('width','251px');
}
});
答案 0 :(得分:8)
此处的问题不是由您粘贴的代码引起的。代码可以多次运行并且执行多个分支的唯一方法是,如果它被执行多次。查看周围的代码,了解可以多次调用它的地方。
答案 1 :(得分:1)
我遇到了类似的问题,在调试时如果条件为真,它也进入了else块。后来我在if/else
块的&中添加了alert和console.log。实现了,否则实际上并没有被执行但是在调试时看起来就像是在其他地方。
因此,无论谁遇到同样的问题,都可以通过添加alert
或console.log
进行验证。
答案 2 :(得分:0)
我看到了同样的行为,当我逐步调试时它起作用了。结果是我附加了多个点击事件,因此代码被触发了n次。