【问题标题】:Why jQuery throwing undefined for checkbox checked property ?为什么 jQuery 为复选框选中的属性抛出 undefined ?
【发布时间】:2016-11-15 19:41:52
【问题描述】:

以下代码在复选框的 onchange 属性中起作用:

 onchange="if(this.checked)$('#row_date').show();else $('#row_date').hide();" 

但是 jQuery

alert($('#apply_range').checked) // throw undefined, either checked or unchecked

不工作。

【问题讨论】:

  • alert($('#apply_range').get(0).checked)
  • 我建议你不要使用内联 JS 事件属性。而是使用事件监听器或 jQuery 的 on 方法。

标签: javascript jquery dom html-parsing


【解决方案1】:

checked 是 DOMElement 的属性,而不是 jQuery 对象。要从 jQuery 对象中获取该属性,请使用 prop():

console.log($('#apply_range').prop('checked'));

或者你可以像这样直接访问 jQuery 对象中的 DOMElement:

console.log($('#apply_range')[0].checked);

// or

console.log($('#apply_range').get(0).checked);

【讨论】:

  • 如果请求属性,jQuery 是否可以回退到 DOMElement 属性,只是好奇
  • 可能,是的。但这将是一个巨大的突破性变化,并可能导致很多混乱。通过特别使用prop('propName')get(0).propName,您获取属性值的意图是明确的。
【解决方案2】:

您必须使用 $('#apply_range').is(":checked") 或直接访问 DOM 元素:$('#apply_range')[0].checked

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2018-09-15
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多