jQuery检查输入是否是类型复选框?

Rio*_*Rio 148 javascript jquery jquery-ui

我想知道输入是否是复选框,以下内容不起作用:

$("#myinput").attr('checked') === undefined
Run Code Online (Sandbox Code Playgroud)

再一次谢谢你!

Ken*_*ing 323

您可以使用伪选择器:checkbox调用jQuery的is函数:

$('#myinput').is(':checkbox')
Run Code Online (Sandbox Code Playgroud)

  • 为什么要使用选择器引擎呢?这完全没必要. (9认同)
  • @Tim Down我认为可能有更有效的方法来完成同样的事情.我想我喜欢这个版本,因为代码非常易读. (7认同)
  • @KenBrowning:足够公平。我在2009年相当反对jQuery,尤其是普遍采用的盲目使用jQuery的SO态度。从那以后,我的观点变得柔和了,如果可能的话,我将撤消我的反对意见。但是,我仍然认为我有观点。备选方案(我不能否认是比较冗长的):`var myInput = $(“ myinput”)[0]; var isCheckbox = myInput.nodeName.toLowerCase()==“ input” && myInput.type ==“ checkbox”;` (2认同)

Est*_*ber 22

>>> a=$("#communitymode")[0]
<input id="communitymode" type="checkbox" name="communitymode">
>>> a.type
"checkbox"
Run Code Online (Sandbox Code Playgroud)

或者,更多的jQuery风格:

$("#myinput").attr('type') == 'checkbox'
Run Code Online (Sandbox Code Playgroud)

  • 它节省了使用jQuery的选择器引擎,这里的使用完全不合适.第一个变体要好得多,因为避免了jQuery混淆`attr()`函数混乱的任何可能性. (6认同)
  • @Tim Down是对的 - 你应该把`attr()`改为`prop()`,afaik.`attr()`并不总是从浏览器获得"真实"属性值(即检查与否).老实说不确定为什么会这样,但我早就学到了这一点. (3认同)

cha*_*aos 10

$("#myinput").attr('type') == 'checkbox'
Run Code Online (Sandbox Code Playgroud)


Geo*_*rge 6

非jQuery解决方案很像jQuery解决方案:

document.querySelector('#myinput').getAttribute('type') === 'checkbox'
Run Code Online (Sandbox Code Playgroud)