代码之家  ›  专栏  ›  技术社区  ›  fightstarr20

jquery-检测DIV是否有2个类

  •  0
  • fightstarr20  · 技术社区  · 6 年前

    我正在使用jquery检测像这样的点击。

    $(".clickable_link").click(function() {
        console.log('Link Clicked');
    }
    
    <div class="clickable_link">
        Click Me
    </div>
    
    <div class="clickable_link special">
        Click Me
    </div>
    

    我正在尝试确定是否单击了带有“special”的DIV,或者是否只单击了带有“clickable_link”的DIV。

    最好的方法是什么?我应该使用hasClass还是filter是更好的选择?

    5 回复  |  直到 6 年前
        1
  •  2
  •   Luay    6 年前

    像这样:

    $(".click").click(function(){
     if ($(this).hasClass("special")) {
      alert("Its Special!");
     }
    });
    .click {
    width:100px;
    height:50px;
    background-color:#333;
    float:left;
    margin:10px;
    color:#fff;
    text-align:center;
    padding-top:25px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="click">Not Special</div>
    <div class="click special">SPECIAL!</div>
        2
  •  1
  •   fdomn-m    6 年前

    作为替代 .hasClass ,您可以使用 .is ,它允许任何选择器,而不只是检查类。

    if($(this).is(".special")) { ...
    

    $(".clickable_link").click(function() {
      if ($(this).is(".special")) { 
        alert("special clicked");
      } else {
        alert("nope");
      }
    });
    .special { color: red; }
    .clickable_link { cursor: pointer; margin-bottom: 0.5em; }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div class="clickable_link">
        Click Me
    </div>
    
    <div class="clickable_link special">
        Click Me
    </div>
        3
  •  1
  •   fdomn-m    6 年前

    $('#id1').click(function() {
      var x = $('#id1').attr('class') //dont use classname to fetch the element
      x = x.split(' ')
      if (x.length > 2)
        alert('id1 has more than 2 classes');
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id='id1' class='myclass mysubclass'>dfdfdfsdfds</div>
        4
  •  1
  •   Barmar    6 年前

    您可以绑定不同的事件处理程序,具体取决于 special 类存在。

    $(".clickable_link.special").click(function()
        console.log("Special link clicked");
    })
    $(".clickable_link:not(.special)").click(function() {
        console.log("Ordinary link clicked");
    });
    

    如果这两种类型的链接都有公共代码,您可以将其放到每个处理程序调用的另一个函数中。

        5
  •  1
  •   Theodor Losev    6 年前

    例如,use可以像这样检测类的计数:

    $(".clickable_link").click(function() {
        var classList = $(this).attr('class').split(/\s+/);
        console.log(`count ${classList.length}`);
    }