使用/ jQuery检查/取消选中时的值更改

时间:2011-09-17 17:06:51

标签: jquery

我正在尝试动态切换var“act”和我的函数。我看起来还不错,但由于某种原因,我继续得到相同的行为我是否选中复选框或取消选中它...有人可以看看我在这里缺少什么吗?

$(".chkbx").change(function() {
    if($(this).attr("checked", true)) {
        var act = "remFromSessionSingleID";
    } else {
        var act = "addToSessionSingleID";
    }

    SelectedContactsInSession(act, $(this).val());          
});

function SelectedContactsInSession(act, id) {           
    $.ajax({
        url: "actions.php",
        type: "POST",
        data: "op="+act+"&contID="+id
    });
}

3 个答案:

答案 0 :(得分:2)

$(this).attr(“checked”,true)每次都将$(this).attr('checked')的值设置为true。删除第二个参数。

另外,如果你使用$(this).prop('checked'),它会将结果标准化为boolean,而.attr()返回“checked”或undefiend:

$(".chkbx").change(function(){
    console.log($(this).attr('checked'), $(this).prop('checked'));
});

> checked true
> undefined false

答案 1 :(得分:2)

您将checked属性设置为true,方法是将其传递给attr,然后返回一个jQuery对象(这将始终是真实的)。只需获取属性:

if($(this).attr("checked")) {

更好的方法是使用is

if($(this).is(":checked")) {

答案 2 :(得分:1)

您没有获得该值,而是将其设置为true - 如果您将第二个参数传递给attr,则会发生这种情况。