【问题标题】:Check if DOM Element is a checkbox检查 DOM 元素是否为复选框
【发布时间】:2012-06-20 08:12:41
【问题描述】:

如何检查给定的 DOM 元素是否为复选框。

场景:

我有一组文本框和复选框,其中的值是动态分配的。我无法确定 DOM 元素是复选框还是文本框。

【问题讨论】:

    标签: javascript jquery dom


    【解决方案1】:

    只使用原生 javascript 你可以做到

    if (el.type && el.type === 'checkbox') {
       ...
    }
    

    甚至更短

    if ((el || {}).type === 'checkbox') {
       ...
    }
    

    或者在现代浏览器中你可以使用matches()

    if (el.matches('[type="checkbox"]') {
        ...
    }
    

    【讨论】:

    • 许多年后......你可能想toLowerCase那个类型值,不是吗?
    • 不,请转换成lowerCase然后比较。
    • @AndreasKöberle 这应该取决于您如何在标记中编写属性,对吧?
    • 为了安全起见,您甚至可以使用'input[type="checkbox"]'
    【解决方案2】:

    如果你使用 jQuery,你可以使用 :checkbox 伪类选择器和 is 方法:

    if($("#that-particular-input").is(":checkbox")) {
    }
    

    【讨论】:

    • 如果我没记错的话,:checkbox是一个伪类
    【解决方案3】:

    检查任何东西

    function isCheckbox (element) {
       return element instanceof HTMLInputElement 
          && element.getAttribute('type') == 'checkbox'
    }
    

    【讨论】:

      【解决方案4】:
      if( $(element)[0].type == "checkbox" ) {
      
      }
      

      if( $(element).is(':checkbox') ) {
      
      }
      

      【讨论】:

        【解决方案5】:

        看看checkbox selector

        var checkboxes = $("form input:checkbox");
        

        你可以这样判断输入是什么类型:

        if ($(".your-input").is(":text"))
        {
            // Textbox
        }
        else if ($(".your-input").is(":checkbox"))
        {
            // Checkbox
        }
        

        【讨论】:

          【解决方案6】:
          if (<DOMNode>.type === "checkbox") {
              // ...
          }
          

          【讨论】:

            【解决方案7】:

            试试这个;

              $(element).is(':checkbox');
            

            这里element 是您的element 的选择器

            if(  $(element).is(':checkbox') ) {
              // do something
            }
            

            【讨论】:

              【解决方案8】:

              jQueryis():

              if ($el.is(':checkbox')) { ... }
              

              【讨论】:

                【解决方案9】:

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

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

                【讨论】:

                  【解决方案10】:

                  你应该有一个体面的命名约定,它可以让你知道一个元素是否是一个复选框,只需要看到它的 id 或 name。 例如"chkMyCheckbox"

                  【讨论】:

                    猜你喜欢
                    • 2011-06-13
                    • 2011-06-12
                    • 1970-01-01
                    • 2018-11-27
                    • 2013-08-18
                    • 2022-06-21
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-07-09
                    相关资源
                    最近更新 更多