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

Posted

技术标签:

【中文标题】jQuery检查输入是不是是类型复选框?【英文标题】:jQuery check if an input is type checkbox?jQuery检查输入是否是类型复选框? 【发布时间】:2010-12-02 02:25:47 【问题描述】:

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

$("#myinput").attr('checked') === undefined

再次感谢您!

【问题讨论】:

【参考方案1】:

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

$('#myinput').is(':checkbox')

【讨论】:

这是我一直使用的方法。 你真的没有比这更简单的了。 为什么要为此使用选择器引擎?这是完全没有必要的。 @Tim Down 我同意你的观点,可能有更有效的方法来完成同样的事情。我想我喜欢这个版本,因为代码可读性很强。 @KenBrowning:很公平。 2009 年我是相当反对 jQuery 的,尤其是流行的那种盲目地使用 jQuery 的态度;从那以后,我的观点有所缓和,如果可能的话,我会撤消我的反对意见。不过,我还是觉得我说的有道理。替代方案(我不能否认更冗长):var myInput = $("myinput")[0]; var isCheckbox = myInput.nodeName.toLowerCase() == "input" && myInput.type == "checkbox";【参考方案2】:
>>> a=$("#communitymode")[0]
<input id="communitymode" type="checkbox" name="communitymode">
>>> a.type
"checkbox"

或者,更多的jQuery风格:

$("#myinput").attr('type') == 'checkbox'

【讨论】:

完全有效。不是最简单的。 它节省了使用jQuery的选择器引擎,这里使用它是完全不合适的。第一个变体要好得多,因为它避免了 jQuery 混淆的 attr() 函数搞砸任何事情的可能性。 @Tim Down 是对的——您应该将 attr() 更改为 prop(),afaik。 attr() 并不总是从浏览器获取“真实”属性值(即是否选中)。老实说,不知道为什么会这样,但我不久前就知道了。 在 Chome 中,您的第二个示例区分大小写:jsfiddle.net/gtza0uuL。它不是.prop,但我不知道是否可以保证。注意:你不能只做 .toLowerCase() ,因为 'type' 可能是未定义的。【参考方案3】:
$("#myinput").attr('type') == 'checkbox'

【讨论】:

【参考方案4】:

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

document.querySelector('#myinput').getAttribute('type') === 'checkbox'

【讨论】:

【参考方案5】:

使用此功能:

function is_checkbox(selector) 
    var $result = $(selector);
    return $result[0] && $result[0].type === 'checkbox';
;

或者这个 jquery 插件:

$.fn.is_checkbox = function ()  return this.is(':checkbox'); ;

【讨论】:

【参考方案6】:
$('#myinput').is(':checkbox')

这是唯一的工作,解决检测复选框是否选中的问题。它返回真或假, 我搜索了几个小时并尝试了一切,现在它的工作 需要明确的是,我使用 EDG 作为浏览器和 W2UI

【讨论】:

记住在问题和答案中粘贴代码时使用代码重构。

以上是关于jQuery检查输入是不是是类型复选框?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

如何检查是不是在 jQuery 中选中了复选框?

使用 jQuery 检查表单是不是有输入元素