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

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

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

再次感谢您!

【问题讨论】:

    标签: javascript jquery jquery-ui


    【解决方案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

          【讨论】:

          • 记住在问题和答案中粘贴代码时使用代码重构。
          猜你喜欢
          • 2012-09-17
          • 1970-01-01
          • 2012-01-26
          • 2011-01-13
          • 1970-01-01
          • 2017-10-04
          • 2012-07-13
          • 1970-01-01
          相关资源
          最近更新 更多