これを宣言する
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 Ready関数の外部(現在はログに記録されています)はログundefined
に記録されますが、DOMready機能の範囲内ではtrue/falseが返されます。
console.log
すべてのリソースがDOMに表示された後、つまり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
。