0

チェックボックスをチェックしながら、jQueryを使用してli要素のスタイルを変更しています。これはコードです:

$(".md-popover-dayselect li").click(function() {
    if($(this).children().children(".md-popover-checkbox").is(":checked")) {
        $(this).css("background-color", "");
        $(this).css("color", "");
        $(this).children().children(".md-popover-checkbox").attr("checked", false);
    } else {
        $(this).css("background-color", "#FFF");
        $(this).css("color", "#64a3c0");
        $(this).children().children(".md-popover-checkbox").attr("checked", true);
    }
});

私が抱えている問題は、チェックボックス自体が機能していないことです。どうすればそれを機能させることができますか?チェックボックス自体を具体的に処理するコードを書く必要がありますか、それとももっと良い方法がありますか?

編集: 動作しないと言うときは、チェックボックス自体が「チェック」せず、上記のように li 要素 (つまり、背景色と色) を変更しないことを意味します。

4

1 に答える 1

1

要素のブール プロパティを設定するには、attr の代わりに prop を使用してみてください。

$(this).children().children(".md-popover-checkbox").prop("checked", false);

これを試して:

$(".md-popover-dayselect li").click(function() {

    var $this = $(this);
    var checked = $this.children().children(".md-popover-checkbox").is(":checked");
    var cssObj = {"background-color": "","color":""};
    if(!checked) {
         cssObj = {"background-color": "#FFF","color","#64a3c0"};

     $this.css(cssObj);

     $this.children().children(".md-popover-checkbox").prop("checked", !checked);
});

また、子は直接の子孫のみを選択することに注意してください。そのため、選択が要素を返すかどうかを確認することをお勧めします。

于 2013-07-05T15:27:58.720 に答える