【问题标题】: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')。见stackoverflow.com/questions/7960208/…
  • $('#acept').prop('checked') 应该可以工作,虽然
  • $("#acept") 是一个 jQuery 对象。您可以使用 .get(0) 获取对象中的第一个元素
  • this 是一个 DOM 元素,$("#accept") 返回一个 jQuery 对象。
  • ...或只是$("#acept")[0].checked

标签: javascript jquery


【解决方案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 会更好。
猜你喜欢
  • 2016-09-18
  • 2021-11-06
  • 1970-01-01
  • 2023-03-09
  • 2018-06-15
  • 1970-01-01
  • 2022-08-17
  • 2022-01-12
  • 2020-05-14
相关资源
最近更新 更多