我不太确定这里发生了什么,感觉我可能遗漏了一些可能非常明显的东西,但我有一个 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');
}
});
最佳答案
这里的问题不是由您粘贴的代码引起的。代码可以多次运行并命中多个分支的唯一方法是它被执行多次。查看周围的代码,寻找可以多次调用的地方。
关于Javascript/jQuery,if 和 else 语句都被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12469581/