声明这个
var intro;
$(document).ready()
因为,会在$(document).ready()
全局范围内隐藏您的变量。
代码
var intro;
$(document).ready(function() {
if ($('.intro_check').is(':checked')) {
intro = true;
$('.intro').wrap('<div class="disabled"></div>');
};
$('.intro_check').change(function(){
if(this.checked) {
intro = false;
$('.enabled').removeClass('enabled').addClass('disabled');
} else {
intro = true;
if($('.intro').exists()) {
$('.disabled').removeClass('disabled').addClass('enabled');
} else {
$('.intro').wrap('<div class="disabled"></div>');
}
}
});
});
根据@Zakaria 评论
其他方式:
window.intro = undefined;
$(document).ready(function() {
if ($('.intro_check').is(':checked')) {
window.intro = true;
$('.intro').wrap('<div class="disabled"></div>');
};
$('.intro_check').change(function(){
if(this.checked) {
window.intro = false;
$('.enabled').removeClass('enabled').addClass('disabled');
} else {
window.intro = true;
if($('.intro').exists()) {
$('.disabled').removeClass('disabled').addClass('enabled');
} else {
$('.intro').wrap('<div class="disabled"></div>');
}
}
});
});
笔记
console.log(intro);
在 DOM 就绪函数之外(当前你已经)将记录undefined
,但在 DOM 就绪函数中它会给你 true/false。
您在 DOM 就绪执行之前执行外部console.log
执行,因为 DOM 就绪执行是在所有资源出现到 DOM 之后,即在 DOM 准备好之后,所以我认为您总是会得到荒谬的结果。
根据@W0rldart 的评论
我需要在 DOM 就绪功能之外使用它
您可以使用以下方法:
var intro = undefined;
$(document).ready(function() {
if ($('.intro_check').is(':checked')) {
intro = true;
introCheck();
$('.intro').wrap('<div class="disabled"></div>');
};
$('.intro_check').change(function() {
if (this.checked) {
intro = true;
} else {
intro = false;
}
introCheck();
});
});
function introCheck() {
console.log(intro);
}
更改 的值后,intro
我调用了一个函数,该函数将以 的新值触发intro
。