为啥“this.checked”有效,但“$(”#acept").checked”无效? [复制]
Posted
技术标签:
【中文标题】为啥“this.checked”有效,但“$(”#acept").checked”无效? [复制]【英文标题】:Why does "this.checked" work but "$("#acept").checked" doesn't? [duplicate]为什么“this.checked”有效,但“$(”#acept").checked”无效? [复制] 【发布时间】:2020-06-17 05:31:15 【问题描述】:我有一个像
这样的输入 <input type="checkbox" name="acept" id="acept">
还有一些简单的 JS/jquery 代码,比如
$('#acept').click(function()
/* if( $("#acept").checked )
alert(" I'm checked ");
*/
if( this.checked )
alert(" I'm checked ");
)
现在,第一个“if”(注释的那个)不起作用,但第二个起作用。 有什么解释吗?
【问题讨论】:
在 jQuery 中正确的语法是$("#acept").is(':checked')
。见***.com/questions/7960208/…
$('#acept').prop('checked')
应该可以工作,虽然
$("#acept") 是一个 jQuery 对象。您可以使用 .get(0) 获取对象中的第一个元素
this
是一个 DOM 元素,$("#accept")
返回一个 jQuery 对象。
...或只是$("#acept")[0].checked
【参考方案1】:
那是因为$("#acept")
是一个 jQuery 对象,并且没有任何属性checked,你可以使用 index 或者使用 jQuery 的内置方法喜欢.prop('checked')
或.is(':checked')
:
$('#acept').click(function()
console.log($("#acept").checked); //undefined
if( $("#acept").is(':checked') )
alert(" I'm checked ");
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" name="acept" id="acept">
【讨论】:
我认为在这种情况下,OP 只是想知道为什么第一个不起作用;实际上,使用this.checked
会更好。以上是关于为啥“this.checked”有效,但“$(”#acept").checked”无效? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 VS Code 认为导入有效但 WebPack 不认为有效?