我正在尝试动态切换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
});
}
答案 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
,则会发生这种情况。