デレステ セリフ付アイドル画像作成に配置されている「プレゼントボックスが空」チェックボックスの状態をJavaScriptを用いて変更しようしたとき、内部的な値は変更されているのに画面表示には反映されないという問題に遭遇。

 調べてみたところ、 jQuery Mobile公式のCheckboxesのメソッド一覧によれば、画面に表示されるチェックボックス表示にJavaScript経由で変更した内部値を反映させるためには以下の操作を行う必要があるとのこと。

$("input[type='checkbox']:first").attr("checked",true).checkboxradio("refresh");

 ところが、これを適用してもなぜかチェックボックス表示状態は切り替わらず……。

 結局のところ、以下の通りにclickメソッドによりクリック動作を模擬させることで解決させたが、公式の解決方法とは異なるためもやっとする。

if (degHue < 330 && degHue > 320 && hsv.s > 0.45 && hsv.s < 0.7 && hsv.v > 0.9) {
    if (checkBox.checked === true) {
        checkBox.click();
    }
} else {
    if (checkBox.checked === false) {
        checkBox.click();
    }
}

旧コード

if (degHue < 325 && degHue > 320) {
    if (checkBox.checked == true) {
        checkBox.click();
    }
}
else {
    if (checkBox.checked == false) {
        checkBox.click();
    }
}