以下代码段仅在我第一次单击.profile-tabs ul li a
元素时才会触发,而不会再次触发。如果我将switchProfTabs()
函数直接放入脚本(而不是调用它),它将按预期工作。我很困惑为什么会这样。我在类似问题上看到的所有答案都说它是关于事件委托的,但我想我已经在使用那种方法,不是吗?任何帮助表示赞赏。
//Detects whether the form has been changed or not
// Set the boolean flag variable
var form_changed = false;
$('#profile-form').on('input change', 'input, select, textarea', function(){
form_changed = true;
});
// Switches the tabs on the profile page
$('.profile-tabs ul li a').on('click', function() {
if ($('.tabContent.active').attr('id') == 'profile') {
if(form_changed){
var conf = confirm('Profile has not been saved! Press cancel to save before continuing');
if (conf){
switchProfTabs(this);
} else {
return false;
}
} else {
switchProfTabs(this);
}
}
return false;
});
function switchProfTabs(clicked) {
$('.profile-tabs ul li a.active').removeClass('active');
$(clicked).addClass('active');
$('.tabContent').hide();
var tab = $(clicked).attr('data-tab');
$('.tabContent.active').removeClass('active');
$('#'+tab).addClass('active').show();
}