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检查输入是不是是类型复选框?的主要内容,如果未能解决你的问题,请参考以下文章