【问题标题】:how to check element have class or not ? already use (hasClass method)?如何检查元素是否有类?已经使用(hasClass 方法)?
【发布时间】:2014-08-01 15:15:02
【问题描述】:

我有这个 HTML 或标记。

<fieldset class="ui-dform-fieldset">
    <input type="text" id="totalRetryCount" name="totalRetryCount" tabindex="1" onblur="validateElement('Configuration', 'testSuiteConfigurationform','totalRetryCount')" class="ui-dform-text">
    <legend class="ui-dform-legend">Total Retry Count</legend>
    <label for="totalRetryCount" class="error">Please enter a valid number.</label>
</fieldset>

我想检查标签是否有错误类。我喜欢那个

当我调试我的元素值是“totalRetryCount”。但它没有显示警报。

element ="totalRetryCount"

if($("#"+element+" "+"label").hasClass('error')){
        alert('-sdafs-')
    }

【问题讨论】:

  • 尝试更好地调试您的代码。可能的错误是找不到元素,将其记录到控制台以查看您是否真的正确获取它。
  • $("label[for='" + totalRetryCount + "']").hasClass(...
  • 顺便说一句,("#"+element + " label") 会这样做,无需连接两个静态字符串......

标签: javascript jquery


【解决方案1】:

您的input 标签永远不会关闭,input 也会自动关闭。既然你有身份证,那就这样做吧:

$("#totalRetryCount").siblings("label").hasClass("error");

【讨论】:

    【解决方案2】:

    您的选择器错误。 totalRetryCount ID 位于 input 上,它不能有子代。

    目标label 是兄弟,因此请改用next-siblings-selector

    if ($("#" + element + " ~ label").hasClass("error")) {
        alert("found error");
    }
    

    或者这个:

    if ($("#" + element + " ~ label.error").length) {
        alert("found error");
    }
    

    【讨论】:

      【解决方案3】:

      您的 id/类标识符已关闭,您正在检查标签是否为 ID 为 totalRetryCount 的元素的子元素,但它不是该元素的子元素。

      这行得通

      HTML:

      <fieldset class="ui-dform-fieldset">
          <input type="text" id="totalRetryCount" name="totalRetryCount" tabindex="1" onblur="validateElement('Configuration', 'testSuiteConfigurationform','totalRetryCount')" class="ui-dform-text">    
         <legend class="ui-dform-legend">Total Retry Count</legend>
         <label for="totalRetryCount" class="error">Please enter a valid number.</label>
      </fieldset>
      

      jQuery:

      if($(".ui-dform-fieldset label").hasClass('error')){
              alert('-sdafs-')
          }
      

      JSFiddle Demo

      【讨论】:

      • 我个人喜欢$('#' + element + ' label.error').size()。通过 DOM 的次数更少,并且不需要再次检查属性。
      • @BradChristie 这不起作用,请参阅答案stackoverflow.com/a/24165166/133408
      • @PeterM:只是在评论中不小心省略了~。应该是$('#' + element + ' ~label.error').size() 也可以是$('label[for="' + element + '"].error').size() 更简洁。
      【解决方案4】:

      字符串totalRetryCountfor 属性的值,而不是父元素的id

      var element ="totalRetryCount"
      if($("label[for='"+element+"']").hasClass('error')){
          alert('-sdafs-')
      }
      
      (or)
      
      $("#" + element).siblings("label[for='"+element+"']").hasClass("error");
      

      【讨论】:

        【解决方案5】:

        您的选择器不正确。有关解释标签选择器的问题,请参见此处。 jQuery selector for the label of a checkbox

        它应该看起来更像这样。

        if ( $("label[for='" + element + "']").hasClass( 'error' ) )
        {
            alert( 'Heres my alert!' );
        }
        

        【讨论】:

          【解决方案6】:
          if($("#totalRetryCount").siblings('label').hasClass('error')){
              alert('-sdafs-'); }
          

          js fiddle

          【讨论】:

            【解决方案7】:
            $("label[for=totalRetryCount]").hasClass('error')){
               alert('-sdafs-')
            }
            

            实际上,如果您的id 中没有非字母数字字符,则不需要用' ' 单引号括起来。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-09-29
              • 2015-07-03
              • 1970-01-01
              • 2013-05-06
              • 2017-12-19
              • 1970-01-01
              • 2020-01-18
              相关资源
              最近更新 更多