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

尝试使用 prop 而不是 attr 来设置元素的布尔属性。

$(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 回答