jQuery-检测div是否有2个类

时间:2018-07-18 21:50:26

标签: javascript jquery

我正在使用jQuery来检测这样的点击。

$(".clickable_link").click(function() {
    console.log('Link Clicked');
}

<div class="clickable_link">
    Click Me
</div>

<div class="clickable_link special">
    Click Me
</div>

我正在尝试确定是否单击了带有“特殊”的div或仅仅是带有“ clickable_link”的div。

做到这一点的最佳方法是什么?我应该使用hasclass还是filter是更好的选择?

5 个答案:

答案 0 :(得分:2)

类似这样的东西:

$(".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>

答案 1 :(得分:1)

作为.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>

答案 2 :(得分:1)

$('#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>

答案 3 :(得分:1)

您可以根据special类是否存在来绑定不同的事件处理程序。

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

如果两种链接都有通用的代码,则可以将其放在每个处理程序都会调用的另一个函数中。

答案 4 :(得分:1)

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

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