Jquery复选框的.checked属性始终返回false

4
$("tbody input[name='rooms_to_book']").on('change',function(){
    var current_row = $(this).closest("tr");
    var current_checkbox = current_row.find("input[name=checkbox]");
    if(current_checkbox.checked) {
        var price_per_night = parseFloat(current_row.find("td[name=price]").text().replace('$',''));
        var rooms_to_book = parseInt(current_row.find("input[name=rooms_to_book]").val());
        rooms_to_book = rooms_to_book ? rooms_to_book : 0;
        total_price = price_per_night * rooms_to_book;
    }else{
        total_price = 0;
    }
    current_row.find("td[name=total_price]").text('$'+ total_price);
});

current_checkbox.checked 始终返回 false,HTML 正确。


5
HTML语法可能是正确的,但您需要将它添加到您的问题中。 - j08691
请查看这个链接,可能对你有所帮助:http://api.jquery.com/attr/ - Charles380
1
checked 不是 jQuery 对象的属性。 - crush
4个回答

11

jQuery对象没有checked属性。请使用

current_checkbox.checked

使用

current_checkbox.prop('checked')

http://api.jquery.com/prop


5

您正在使用 current_checkbox.checked,但是复选框没有任何“checked”属性,但您可以使用 $('#id').is(':checked')。

注:$('#id')应替换为您实际使用的复选框的ID。


2

您正在使用 jQuery 元素,而非 DOM 元素。请使用以下代码:

if(current_checkbox.prop("checked")) {

} //just for Steve <3

1

current_row.find("input[name=checkbox]")

我相当确定这会返回一个jQuery对象,而不是底层的复选框元素。

if(current_checkbox[0].checked)

应该可以运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接